diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-28 10:46:11 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:14 -0300 |
| commit | 73e797e3f31eb52b0074b86cd16949c827b75670 (patch) | |
| tree | a2be3b24014daccf9140b9fc10907d8a42c73f4c /src/ninep/events.zig | |
| parent | b03338789f5c9f3619a1ace7fcda842bc073c4dc (diff) | |
| download | pardes-73e797e3f31eb52b0074b86cd16949c827b75670.tar.gz pardes-73e797e3f31eb52b0074b86cd16949c827b75670.zip | |
A lock another open holds fails at once with file in use instead of parking
A contended lock parked until the holder unlocked, but through a kernel
or FUSE mount the kernel serialises writes to one file, so the parked
lock held up the holder's own unlock and close on that ctl, and the two
deadlocked. acme's qlock blocks; here the second lock is refused at once
with file in use (EBUSY) and the client retries, and nothing parks on
the lock any more.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/ninep/events.zig')
| -rw-r--r-- | src/ninep/events.zig | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/src/ninep/events.zig b/src/ninep/events.zig index 34355e5c..172f5c00 100644 --- a/src/ninep/events.zig +++ b/src/ninep/events.zig @@ -116,8 +116,6 @@ pub fn noteRetire(p: *Pardes, pane: *Pane) void { tree.pty.shellGone(p, pane, false); p.fs.news = true; // a read held on its event or pty/data hears it went p.fs.listeners -|= pane.fs.readers; - // A write parked on its lock goes again, and finds the pane gone. - if (pane.fs.lock != null) pardes.turn.parked = true; if (pane.fs.unannounced) { pane.fs.unannounced = false; return; |
