git: 9front

Download patch

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++){
--