mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-04 08:56:59 +01:00
fix(fuse): a kernel notice sent from the runtime hands its worker's tasks on (B130)
This commit is contained in:
1 parent
e743cd60cf
commit
a68dae9422
4 files changed
+79
-17
No files matched your search
+11
-4
@@ -1218,7 +1218,7 @@ timing, and then on the refused write.
|
||||
|
||||
## B130 — A read of a file that a remote change invalidates can hang the daemon
|
||||
|
||||
**Status:** Open.
|
||||
**Status:** Fixed.
|
||||
**Found:** 2026-10-03, by the simulation runs (`sim::run`, profile one-client-flaky, seed 1).
|
||||
After the last step, a read of `c0/z/f.txt` never returned. The watchdog's stacks showed the
|
||||
read's worker in `read_range_remote`, waiting in `block_on` for its fetch, and a runtime worker
|
||||
@@ -1239,9 +1239,16 @@ sleep on a condvar. The read's fetch waits on a timer (here the fake's latency,
|
||||
HTTP response), so it never finishes and never lets go of the page lock. The daemon stays stuck
|
||||
until some other work wakes a worker, and on an idle machine that may never happen.
|
||||
|
||||
**Test:** the simulation runs recognise it in the watchdog's stacks (a `tokio-rt-worker` in
|
||||
state `D` inside `NotifyBatch::flush`), count it and end the seed there. With
|
||||
`PDFS_SIM_KNOWN=fail`, seed 1 of one-client-flaky fails on it.
|
||||
**Fix.** Every notice to the kernel goes through `off_the_runtime`, which on a runtime worker
|
||||
sends it from inside `block_in_place`: the worker's tasks, and the driver with them, go to
|
||||
another thread while it waits. Anywhere else the notice is sent as before.
|
||||
|
||||
**Test:** `a_kernel_notice_sent_from_the_runtime_leaves_its_timers_running` in
|
||||
`crates/pdfs-fuse/src/lib.rs`: the one worker of a runtime sends a notice that returns only once
|
||||
a timer of that runtime has fired. The simulation runs still recognise it in the watchdog's
|
||||
stacks (a `tokio-rt-worker` in state `D` inside `NotifyBatch::flush`); with
|
||||
`PDFS_SIM_KNOWN=fail`, seed 1 of one-client-flaky fails on it, though it no longer reaches it
|
||||
since phase 3.
|
||||
|
||||
## B129 — A file deleted or replaced while its create is on the wire stays on Drive
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@ by its local id, in the queue, the stored tree and pins alike.
|
||||
worker missed the stop (B180).
|
||||
- **A folder made while offline or with sync paused no longer fails with "Input/output
|
||||
error"** once it is refreshed or the connection comes back (B125).
|
||||
- **The daemon no longer hangs when a file being read changes on Drive** (B130).
|
||||
- **A file renamed just as its upload finished keeps its new name.** The mount no longer showed
|
||||
the old name, and a second rename no longer failed with "No such file or directory" (B152,
|
||||
B172).
|
||||
|
||||
@@ -9,7 +9,7 @@ Tracks `docs/MILESTONE-3.0.0.md`. Update it with every commit that moves a phase
|
||||
- **Phase 2**: local ids, inode = local id, one tree for every mount (2.10.0).
|
||||
- **Phase 3, first part**: mkdir, create, rename, unlink and rmdir on the mount are recorded
|
||||
locally and sent from the queue; `"local_first": false` brings back the old path (5e0f30c).
|
||||
- Fixes from the simulation and account runs since then: B125, B127 and B141 to B180.
|
||||
- Fixes from the simulation and account runs since then: B125, B127, B130 and B141 to B180.
|
||||
- **Sync issues, first cut** (§6.2): refusals sorted into issues, shown at once in the app,
|
||||
tray and CLI; Export button and `pdfs sync export`; `pdfs sync issues`.
|
||||
|
||||
@@ -89,8 +89,8 @@ Tracks `docs/MILESTONE-3.0.0.md`. Update it with every commit that moves a phase
|
||||
create was on the wire, which the mount showed under its old name (B161, fixed).
|
||||
Seed 4 failed on a folder removed and made again, whose create adopted the removed
|
||||
folder (B162, fixed). CI on 903452a passed every profile.
|
||||
- [ ] Known-bug list in `sim/run.rs` is empty: B130 open; B125, B127, B129 and B132 fixed but
|
||||
unconfirmed.
|
||||
- [ ] Known-bug list in `sim/run.rs` is empty: none open; B125, B127, B129, B130 and B132
|
||||
fixed but not yet confirmed by the runs.
|
||||
- [ ] A clean account run. The one on a6f36d5 (2026-10-04, LAN: 427 passed, 12 failed)
|
||||
failed B113 and B121 on every on-demand mount, two mirror-to-mirror move cases, and
|
||||
the journal check. B121 was a bug (B149, fixed); B113's case still expected creates
|
||||
|
||||
Reference in new issue
Block a user