summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-10-01 22:59:28 -0300
committerGabriel Schneider <[email protected]>2026-10-01 23:22:39 -0300
commit5618465914b259bea8f5d07e2438814e8607175d (patch)
treef9ab27a29b5a42c3d2fd406d65878595ca3b5097
parentdc4dd3bc25b11721ab3ad3fccbaea1de54b9fb90 (diff)
downloadpardes-5618465914b259bea8f5d07e2438814e8607175d.tar.gz
pardes-5618465914b259bea8f5d07e2438814e8607175d.zip
cloud9 re-pinned at e66b2cf, whose 9ns opens files with FOPEN_PARALLEL_DIRECT_WRITES: an Edit filter writing, through a mount, the ctl its Edit came by (without truncating it) answers at once, not after 10 s; selfmount checks it
Co-Authored-By: Claude Opus 5.5 <[email protected]>
-rw-r--r--build.zig.zon4
-rw-r--r--test/selfmount.py11
2 files changed, 13 insertions, 2 deletions
diff --git a/build.zig.zon b/build.zig.zon
index 5410776c..a542f83c 100644
--- a/build.zig.zon
+++ b/build.zig.zon
@@ -9,8 +9,8 @@
// read-only HTTPS URL is what a manifest can carry. Re-pin with
// `zig fetch --save=cloud9 git+https://git.sr.ht/~gbrls/cloud9#<commit>`.
.cloud9 = .{
- .url = "git+https://git.sr.ht/~gbrls/cloud9#34834165e2b54dd6ac26babd1e9d0443f1f53ee4",
- .hash = "cloud9-0.1.0-yt86qpUlHgC3vH0y1u4l0rSDo_lDBvuIu6tqETfVaJNZ",
+ .url = "git+https://git.sr.ht/~gbrls/cloud9#e66b2cfcf4e196ec04c73a33364cb567dbcc5d18",
+ .hash = "cloud9-0.1.0-yt86qqQnHgDP1VHdmSD595GnfBPVkHSoe_LvCL4bLy9y",
},
// Pinned to the exact libvaxis commit ghostty is built against, so it
// is compatible with ghostty's uucode configuration (the one we share
diff --git a/test/selfmount.py b/test/selfmount.py
index 347093e1..c6565b5e 100644
--- a/test/selfmount.py
+++ b/test/selfmount.py
@@ -256,6 +256,17 @@ def run(binary):
time.sleep(.05)
check(got == '0' and all(f' held-{i}\n' in log for i in range(1, 41)),
f'40 closes holding a last line each through the mount, all answered, every line run ({got!r})')
+ # An Edit whose filter writes the very ctl the Edit came by: 9ns
+ # opens with FOPEN_PARALLEL_DIRECT_WRITES, so the filter's write
+ # is not queued behind the one waiting for it. (Its own open may
+ # not truncate, `1<>`, not `>`: Linux takes the file's lock
+ # outright for an O_TRUNC open, and the waiting write holds it
+ # shared; nothing a server answers can change that.)
+ started = time.monotonic()
+ got = run(f"printf 'Edit ,>echo Msg filter-hi 1<> {mount}/pane/{scratch}/ctl\\n' > {mount}/pane/{scratch}/ctl\n".encode())
+ took = time.monotonic() - started
+ check(got == '0' and took < 5 and 'filter-hi' in client.read('/log').decode(),
+ f'an Edit filter writing its own ctl through the mount answers promptly ({got!r}, {took:.1f}s)')
# Forty event reads held through the mount, a follower each, and
# the mount still answers the rest: 9ns keeps workers past what
# the editor holds (128), so `cat layout` is not queued behind