GedasFX / decky-cloud-save

Other
93 stars 13 forks source link

Write permissions for SD card lost? #102

Open RhythmScript opened 1 month ago

RhythmScript commented 1 month ago

I have been using this plugin without issue every day for months to bi-sync a folder structure on my Deck's SD card (mmcblk0p1) with a folder structure in my OneDrive account, but today it stopped working. After some attempts at debugging, I think the issue is that rclone is unable to get permission to modify files on the SD card. The error logs in 1.4.2's pop-up show 3 things:

1) If attempting to update a file that exists on the Deck's card, it throws the error chtimes [path/to/stuff]: operation not permitted (it cannot update the last modified time on the files in question)

2) If attempting to create a file that does not exist on the Deck's card, it throws the error Failed to copy: failed to open source object: unauthenticated: Unauthenticated

3) If attempting to push a file TO OneDrive (by disabling bi-sync and forcing a manual unidirectional sync of a file from local to cloud), the file syncs without a hitch and the update times on OneDrive are updated correctly.

Some other things to note: This behavior persists when using both the current Steam client and Steam OS beta, as well as using the current Stable Steam OS. A factory reimage of the Deck (coupled with a re-update to the latest Stable SteamOS/client) did not correct this problem; needless to say, this factory reimage also completely uninstalled Decky Loader and any prior config data or installs of Decky-Cloud-Save. It's a from-scratch situation

This behavior persists when Decky-Cloud-Save is regressed to version 1.4.0 (the logs go away and it just shows the old delete locks prompt, but the issue persists).

Googling tells me that rclone did once sometimes throw the unauthenticated error with OneDrive when downloading but allowed uploading (it has something to do with the way tokens are generated) but a fix was pushed to rclone back in 2023... and I stress that this all was working perfectly fine until a day ago so I don't think it's due to using an old rclone version, or a sudden change in how OneDrive works causing issues. Nothing about the OneDrive file structure or the local Deck file structure were changed in any way prior to this issue occurring.

GedasFX commented 1 month ago

Hey, as a troubleshooting step, can you use something else like Google Drive? #99 Also have issues with OneDrive, and I suspect Microsoft changed something on their systems to break. Long shot thats its related, but I want to be sure.

RhythmScript commented 1 month ago

Google Drive doesn't work for me, however I tried using Dropbox (which is not a workable long-term solution, neither dropbox nor google drive function with junctions so it can't create an internal reference to the save file structure on the desktop machine, but it tests the point). The issue is slightly different now, but also still the same. I successfully get "copied" messages on all the files to be pulled down now.

However, it still ends with [path/to/stuff]: Set directory modification time (using SetModTime) ERROR: bisync critical error: chtimes /run/media: operation not permitted ERROR: bisync aborted. Must run --resync to recover.

The fact that the files do get copied is a plus, however the chtimes failure is still throwing errors and my concern is the rclone sync process needs to accurately know when a file was last modified in order to perform sync correctly.

EDIT: for clarity's sake, it's a little confusing whether /run/media refers to the internal Deck path or to the (identically named) path on the cloud drive. Of relevance is the earlier info strings:

INFO: Synching Path1 "local{12rtk}:/" with Path2 "backend:decky-cloud-save/" INFO: Copying Path2 files to Path1

This leads me to believe the operation is failing when trying to copy files from the cloud location TO the local path, and that therefore the chtimes error is indeed on the local SD card mount