mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-14 01:27:03 +01:00
fix(fuse): keep files offline in on-demand synced folders
`pdfs pin` and `pdfs unpin` resolved every path against the primary mount with `rel_to_mount`. An absolute path in an on-demand synced folder such as ~/Pictures was refused as "not under the mountpoint", and a relative path named a file in My files instead. A synced folder's file is a different Drive node from a same-named file in My files, so keeping one offline did nothing for the other, and every program reading the synced copy downloaded it. Pin and unpin now route through `route_to_mount`, like ls, refresh, rm and mv since B86, and run on the mount that owns the path. A path in a mirror folder gets an error saying its files are already on this computer. A pin made through an on-demand folder records the absolute local path, so `pdfs pins`, the prompt and the HUD open the file where it was kept; pins under the primary mount still record the mount-relative path. Fixes B281.
This commit is contained in:
1 parent
ad648ab5cc
commit
3f45e89391
6 files changed
+143
-13
No files matched your search
@@ -109,6 +109,7 @@ a live account since.
|
||||
|
||||
| Entry | Title |
|
||||
|---|---|
|
||||
| [B281](#b281--a-file-in-a-synced-folder-cannot-be-kept-offline) | A file in a synced folder cannot be kept offline |
|
||||
| [B280](#b280--uploading-a-batch-of-large-photos-swaps-the-machine-until-the-daemon-is-killed) | Uploading a batch of large photos swaps the machine until the daemon is killed |
|
||||
| [B279](#b279--after-a-watchdog-kill-the-mount-never-comes-back) | After a watchdog kill the mount never comes back |
|
||||
| [B278](#b278--sync-list-and-devices-list-show-the-last-sync-as-epoch-seconds) | `sync list` and `devices list` show the last sync as epoch seconds |
|
||||
@@ -383,6 +384,39 @@ a live account since.
|
||||
|
||||
Newest first.
|
||||
|
||||
### B281 — A file in a synced folder cannot be kept offline
|
||||
|
||||
**Status:** Fixed, not verified live
|
||||
**Found:** 2026-11-13. An image was made available offline in the app, and it opened from the app
|
||||
with no download. `feh` opened it from a terminal and downloaded it each time. The two were not
|
||||
the same file. The app had kept `~/ProtonDrive/Pictures/photo.png`, in My files. The
|
||||
terminal opened `~/Pictures/photo.png`, in the on-demand synced folder `~/Pictures`. That
|
||||
copy is a separate node under Computers, uploaded on its own, with the same name and size but a
|
||||
different mtime. The daemon treats every program the same way: it does not look at the process
|
||||
that reads.
|
||||
**Where:** the `Pin` and `Unpin` handlers in `crates/pdfs-fuse/src/control.rs`
|
||||
|
||||
**Repro:** Add a synced folder in on-demand mode and put a file in it. `pdfs pin` on its absolute
|
||||
path fails with "is not under the mountpoint". A relative path is resolved against My files, so
|
||||
it keeps a file of the same name there, if one exists, or fails. Reading the file in the synced
|
||||
folder then downloads it.
|
||||
|
||||
**Cause:** Both handlers turned the path into a mount-relative one with `rel_to_mount`, which only
|
||||
knows the primary mount. B86 moved `ls`, `refresh`, `rm` and `mv` to `route_to_mount`, which finds
|
||||
the mount that serves an absolute path. Pin and unpin were left out.
|
||||
|
||||
**Fix:** Pin and unpin route through `route_to_mount` and run on the mount that owns the path. A
|
||||
path in a mirror folder gets an error that says its files are already on this computer. The pin
|
||||
registry records the absolute local path for a pin made through an on-demand folder, so
|
||||
`pdfs pins`, the prompt and the HUD open the file through the folder it was kept from. Pins
|
||||
under the primary mount still record the path relative to it.
|
||||
|
||||
**Test:** `pinning_a_file_in_an_on_demand_folder_keeps_that_folders_copy` in
|
||||
`crates/pdfs-fuse/src/sim/daemon.rs`. It pins a file through an on-demand folder's absolute path,
|
||||
takes the link down, and reads the file through that folder.
|
||||
|
||||
---
|
||||
|
||||
### B280 — Uploading a batch of large photos swaps the machine until the daemon is killed
|
||||
|
||||
**Status:** Fixed, not verified live
|
||||
|
||||
@@ -54,6 +54,11 @@ Existing folders stay device backups. Older builds cannot open the upgraded data
|
||||
restart. Thumbnails now share 512 MiB between them: phone photos are still made side by side,
|
||||
and a very large photo waits and is made on its own.
|
||||
|
||||
- **Keep a file offline in an on-demand synced folder** (B281). `pdfs pin` and `pdfs unpin` now
|
||||
accept a path in a synced folder such as `~/Pictures`. Before, they only took paths under the
|
||||
Proton Drive mount, so the copy in the synced folder was downloaded again by every program that
|
||||
read it.
|
||||
|
||||
## [3.7.0] — 2026-11-02
|
||||
|
||||
Schema: **44**, unchanged.
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ commands are for scripts and for cases where the mount is not available.
|
||||
|
||||
| Command | Description |
|
||||
|---|---|
|
||||
| `pdfs pin PATH` | Download a file completely and keep it on this computer. For a folder, its files download in the background (`pdfs transfers` shows the progress). |
|
||||
| `pdfs pin PATH` | Download a file completely and keep it on this computer. For a folder, its files download in the background (`pdfs transfers` shows the progress). PATH can be under the Proton Drive mount or in an on-demand synced folder. A file in a mirror folder is already on this computer. |
|
||||
| `pdfs unpin PATH` | Release it back to online only. A file inside a folder kept offline cannot be released on its own. |
|
||||
| `pdfs pins` | List files and folders kept available offline. |
|
||||
|
||||
|
||||
Reference in new issue
Block a user