mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-04 00:47:00 +01:00
fix(core): a folder listed just as its create lands is listed from the database (B177)
This commit is contained in:
1 parent
4f141c78ca
commit
0f3c06f982
5 files changed
+75
-5
No files matched your search
@@ -12,6 +12,28 @@ Conventions:
|
||||
|
||||
---
|
||||
|
||||
## B177 — A folder listed just as its create lands answers "Input/output error"
|
||||
|
||||
**Status:** Fixed (unverified).
|
||||
**Found:** 2026-10-04, by the account run on 378667f, on an on-demand sync folder: B100's
|
||||
`lstat` of `b100-copy/dir-0/sub-0/file-00.bin` failed with `EIO`. The daemon logged
|
||||
`enumerate folder children failed folder_uid=local~163903 ... InvalidEncryptedIdFormat` 85 ms
|
||||
before `dir-0`'s create landed.
|
||||
|
||||
**Where:** `Db::children_if_listed` and `Db::set_listed` in `crates/pdfs-core/src/db/nodes.rs`.
|
||||
|
||||
**Cause.** A folder made on the mount is marked as listed, so its listing comes from the
|
||||
database and never from Drive, which has not heard of it. The flag was looked up by uid. In
|
||||
B173's gap the row already has the uid Drive gave the folder and the tree still asks by the
|
||||
stand-in, so the lookup found no row, and the listing went to Drive with the stand-in.
|
||||
|
||||
**Fix.** A stand-in finds its row by its local id, before and after its create lands.
|
||||
|
||||
**Test:** `a_stand_in_folder_stays_listed_once_its_create_has_landed` in
|
||||
`crates/pdfs-core/src/db/tests.rs`.
|
||||
|
||||
---
|
||||
|
||||
## B176 — A write closed just as its file's create lands is dropped
|
||||
|
||||
**Status:** Fixed (unverified).
|
||||
|
||||
@@ -79,6 +79,8 @@ by its local id, in the queue, the stored tree and pins alike.
|
||||
- **A file replaced by a rename just as it reached Drive is removed from Drive too.** It no
|
||||
longer stayed there, and the next rename of its name no longer moved it instead (B175).
|
||||
- **A write closed just as its file reached Drive is no longer lost** (B176).
|
||||
- **Opening a folder just as it reaches Drive no longer fails with "Input/output error"**
|
||||
(B177).
|
||||
- **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: B127 and B141 to B176.
|
||||
- Fixes from the simulation and account runs since then: B127 and B141 to B177.
|
||||
- **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`.
|
||||
|
||||
@@ -121,6 +121,8 @@ Tracks `docs/MILESTONE-3.0.0.md`. Update it with every commit that moves a phase
|
||||
in the same gap was refused with `EACCES` (B174, fixed). The loop on 378667f failed
|
||||
seed 8: a file replaced by a rename in that gap stayed on Drive (B175, fixed), and
|
||||
seed 12: a write closed as its file's create landed was dropped (B176, fixed).
|
||||
The account run on 378667f: a folder listed as its create landed asked Drive by
|
||||
its stand-in and answered `EIO` (B177, fixed).
|
||||
5. **Release**: 2.10.0 is tagged; the 2.9.0 tag still waits for the user's go-ahead.
|
||||
|
||||
## After 3.0.0
|
||||
|
||||
Reference in new issue
Block a user