git: 9front

Download patch

ref: 2b543568946f65d4e06a8826a04ad8f14473cab2
parent: e934575d76d90d0a1e3bf6c9342e76ef9db4a011
author: Ori Bernstein <ori@eigenstate.org>
date: Fri Dec 12 21:18:20 EST 2025

gefs: remove epoch around chsend

this chsend epoch can cause deadlocks at shutdown,
and epoch bloat at other times; we don't access the
tree, so don't do it.

--- a/sys/src/cmd/gefs/fs.c
+++ b/sys/src/cmd/gefs/fs.c
@@ -3086,7 +3086,7 @@
 }
 
 void
-runtasks(int tid, void *)
+runtasks(int, void *)
 {
 	vlong now;
 	Mount *mnt;
@@ -3099,9 +3099,7 @@
 		sleep(5000);
 		if(agetl(&fs->rdonly))
 			continue;
-		epochstart(tid);
 		if(waserror()){
-			epochend(tid);
 			fprint(2, "task error: %s\n", errmsg());
 			continue;
 		}
@@ -3119,8 +3117,6 @@
 			for(i = 0; i < nelem(mnt->cron); i++)
 				cronsync(mnt->name, &mnt->cron[i], &tm, now);
 		}
-		epochend(tid);
-		epochclean();
 		poperror();
 	}
 }
--- a/sys/src/cmd/gefs/main.c
+++ b/sys/src/cmd/gefs/main.c
@@ -476,7 +476,7 @@
 	xlaunch(runcons, (void*)ctlfd, aincl(&fs->nworker, 1), "ctl");
 	xlaunch(runmutate, nil, aincl(&fs->nworker, 1), "mutate");
 	xlaunch(runsweep, nil, aincl(&fs->nworker, 1), "sweep");
-	xlaunch(runtasks, nil, aincl(&fs->nworker, 1), "tasks");
+	xlaunch(runtasks, nil, -1, "tasks");
 	for(i = 0; i < fs->nreaders; i++)
 		xlaunch(runread, fs->rdchan[i], aincl(&fs->nworker, 1), "readio");
 	for(i = 0; i < fs->nsyncers; i++)
--