summaryrefslogtreecommitdiff
path: root/src/9p_io.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-10-01 17:43:57 -0300
committerGabriel Schneider <[email protected]>2026-10-01 17:46:21 -0300
commit322aff16a2ca0cfd73e1a62234b8904412b30844 (patch)
treee61aa1a6a798567fe88b9d87d45b69a42c743dda /src/9p_io.zig
parent1a33ed7221733b181726c7ad01e4ce190bcf1d05 (diff)
downloadpardes-322aff16a2ca0cfd73e1a62234b8904412b30844.tar.gz
pardes-322aff16a2ca0cfd73e1a62234b8904412b30844.zip
A close's held last line runs before the close is answered when no editor step is out, so its err is in the log by then; with a step out it still waits for that step (follows rzxqzosq; monkey9p's one_failure_rule)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/9p_io.zig')
-rw-r--r--src/9p_io.zig5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/9p_io.zig b/src/9p_io.zig
index 0b3db274..68f6f6b7 100644
--- a/src/9p_io.zig
+++ b/src/9p_io.zig
@@ -269,6 +269,11 @@ pub const Listener = struct {
const fills = pardes.ctlfs.handsOff(core, req);
const reply = core.serveFs(req);
if (req.op == .release and quiet) l.collectOs();
+ // A close's held last line runs now when no step is out, so its err
+ // is logged before the close is answered, as before; with a step
+ // out (perhaps through a mount this close came by) it waits for
+ // that step, and the close is answered at once all the same.
+ if (req.op == .release and quiet) pardes.ctlfs.runClosedLines(core);
// A read with nothing yet stays parked in the engine, and the core
// keeps its ticket to answer it when what it waits on has something.
if (reply.status == .again and req.op == .read) {