ref: 9e2ca31787261392f29f221ca586fb7c09bc92e0
parent: 3ea08ad8394fd7172435ecaa0279c9789731ab70
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Dec 28 13:43:00 EST 2025
gefs: don't skip syncing when fs has gone readonly when exiting, we set the file system to read-only, so we would skip flushing the last few IO operations; instead, let's go ahead and flush them.
--- a/sys/src/cmd/gefs/fs.c
+++ b/sys/src/cmd/gefs/fs.c
@@ -88,8 +88,6 @@
Tree *r;
int i;
- if(agetl(&fs->rdonly))
- return;
qlock(&fs->synclk);
if(waserror()){fprint(2, "failed to sync: %s\n", errmsg());
@@ -2834,6 +2832,10 @@
for(i = 0; i < 4; i++){epochwait();
epochclean();
+ }
+ if(waserror()){+ fprint(2, "halt failed: %s\n", errmsg());
+ break;
}
sync(id);
}
--- a/sys/src/cmd/gefs/tree.c
+++ b/sys/src/cmd/gefs/tree.c
@@ -1266,8 +1266,6 @@
Bptr bp;
assert(!canqlock(&fs->mutlk));
- if(agetl(&fs->rdonly))
- error(Erdonly);
sz = 0;
stablesort(msg, nmsg);
for(i = 0; i < nmsg; i++){--
⑨