summaryrefslogtreecommitdiff
path: root/.agents
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 10:46:11 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commit73e797e3f31eb52b0074b86cd16949c827b75670 (patch)
treea2be3b24014daccf9140b9fc10907d8a42c73f4c /.agents
parentb03338789f5c9f3619a1ace7fcda842bc073c4dc (diff)
downloadpardes-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 '.agents')
-rw-r--r--.agents/skills/pardes-9p/SKILL.md3
1 files changed, 2 insertions, 1 deletions
diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md
index 0207f14c..6fea5838 100644
--- a/.agents/skills/pardes-9p/SKILL.md
+++ b/.agents/skills/pardes-9p/SKILL.md
@@ -146,7 +146,8 @@ it back evaluates it, and two clients addressing the same pane will interfere.
a reserved zero, the dirty flag, the width in cells, the font and the tab
width, then `current` or `notcurrent` — and takes `get` (reload from disk),
`lock`/`unlock`, and any builtin that acts on a pane (`Del`, `Save f`,
-`Collapse`). Session builtins and settings go to the root `ctl`, which reads
+`Collapse`). A `lock` another open holds fails at once with `file in use`
+(EBUSY): retry it. Session builtins and settings go to the root `ctl`, which reads
back every setting in the syntax it takes. A ctl write is checked whole
first and refused as `unknown control message "X"` (EINVAL) and the like,
a required argument missing included (`wrong #args ... "Mount"`); then a line