Rename or edit save-as files in nested combine mounted drive files causes the "Error renaming temporary file: Input/output error:"

What is the problem you are having with rclone?

Rename or edit save-as files in nested combine mounted drive files causes the "Error renaming temporary file: Input/output error:"
Example config file attached.

Run the command 'rclone version' and share the full output of the command.

rclone 1.61.1
Ubuntu/Xubuntu 22.04, using file manager XFCE Thunar v 4.18.0

Which cloud storage system are you using? (eg Google Drive)

Google Drive
See attached example config file.

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone mount 00_GDrv: ~/GDrv --vfs-cache-mode writes
...
2023/01/16 18:10:59 ERROR : MyDrive/Plain Text.txt: Dir.Rename error: Fs "combine root ''" can't rename files (no server-side Move or Copy)
2023/01/16 18:10:59 ERROR : MyDrive/Plain Text.txt: Dir.Rename error: Fs "combine root ''" can't rename files (no server-side Move or Copy)
2023/01/16 18:10:59 ERROR : IO error: Fs "combine root ''" can't rename files (no server-side Move or Copy)

The rclone config contents with secrets removed.

[00_GDrv]
type = combine
# Comment - Type ONE space between each upstream drive, 2 spaces doesn't work.
upstreams = "MyDrive=00_MyDrive:" "Photos=00_Photos:" "SharedDrives=00_SharedDrives_woencrypted:" "EncryptedDrives=00_encdrives:" 

# Comment -  My Google Drive
[00_MyDrive]
type = drive
#export_formats = desktop
export_formats = link.html
client_id = Change_to__correct_clientID_obtained_from_Google.apps.googleusercontent.com
client_secret = Change_to_correct_secret_obtained_from_Google
token = {"access_token":"The_token_is_auto_generated_and_changed_on_first_and_each_successfull_connection_DO_NOT_MANUALLY_Unless_you_know_better_what_you_arere_doing"}

[00_Photos]
type = google photos
client_id = Change_to__correct_clientID_obtained_from_Google.apps.googleusercontent.com
client_secret = Change_to_correct_secret_obtained_from_Google
token = {"access_token":"The_token_is_auto_generated_and_changed_on_first_and_each_successfull_connection_DO_NOT_MANUALLY_Unless_you_know_better_what_you_arere_doing"}

# Comment - All shared/team drive without encrypted hidden drives
[00_SharedDrives_woencrypted]
type = combine
upstreams = "TeamDrv01=TeamDrv01:" "TeamDrv02=TeamDrv02:" "TeamDrv03=TeamDrv03:"

# Comment - Encrypted drives, can be hidden on Google in browser
[00_encdrives]
type = combine
upstreams = "decrypted01=decrypted01:" "decrypted02=decrypted02:"

[decrypted01]
type = crypt
remote = encryped01:/encrypted_folder/
password = keep_your_password1and2_safe_and_secured_or_lose_all_your_data
password2 = keep_your_password1and2_safe_and_secured_or_lose_all_your_data

[decrypted02]
type = crypt
remote = encryped02:/encrypted_folder/
password = keep_your_password1and2_safe_and_secured_or_lose_all_your_data
password2 = keep_your_password1and2_safe_and_secured_or_lose_all_your_data


# DO NOT EDIT BELOW THIS LINE
# https://rclone.org/drive/#drives
# To generate your config text below, run a command like
#   rclone backend -o config drives 00_MyDrive:
# Then copy and paste the outputted text

[TeamDrv01]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[TeamDrv02]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[TeamDrv03]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[encryped01]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[encryped02]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[AllDrives]
type = combine
upstreams = "TeamDrv01=TeamDrv01:" "TeamDrv02=TeamDrv02:" "TeamDrv03=TeamDrv03:" "encryped01=encryped01:" "encryped02=encryped02:"

A log from the command with the -vv flag

Renaming a file zzzz....txt to xxx....txt

2023/01/16 18:37:33 DEBUG : MyDrive/zzzzzzzzzzzzzzzzz.txt: vfs cache: starting upload
2023/01/16 18:37:35 INFO  : MyDrive/zzzzzzzzzzzzzzzzz.txt: Copied (new)
2023/01/16 18:37:35 DEBUG : MyDrive/zzzzzzzzzzzzzzzzz.txt: vfs cache: fingerprint now "0"
2023/01/16 18:37:35 DEBUG : MyDrive/zzzzzzzzzzzzzzzzz.txt: vfs cache: writeback object to VFS layer
2023/01/16 18:37:35 DEBUG : MyDrive: Added virtual directory entry vAddFile: "zzzzzzzzzzzzzzzzz.txt"
2023/01/16 18:37:35 INFO  : MyDrive/zzzzzzzzzzzzzzzzz.txt: vfs cache: upload succeeded try #1
2023/01/16 18:37:37 DEBUG : /: Lookup: name="MyDrive"
2023/01/16 18:37:37 DEBUG : /: >Lookup: node=MyDrive/, err=<nil>
2023/01/16 18:37:37 DEBUG : MyDrive/: Attr: 
2023/01/16 18:37:37 DEBUG : MyDrive/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/16 18:37:43 DEBUG : /: Lookup: name="MyDrive"
2023/01/16 18:37:43 DEBUG : /: >Lookup: node=MyDrive/, err=<nil>
2023/01/16 18:37:43 DEBUG : MyDrive/: Attr: 
2023/01/16 18:37:43 DEBUG : MyDrive/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/16 18:37:43 DEBUG : MyDrive/: Lookup: name="xxxxxxxxxx.txt"
2023/01/16 18:37:43 DEBUG : MyDrive/: >Lookup: node=<nil>, err=no such file or directory
2023/01/16 18:37:43 DEBUG : MyDrive/: Lookup: name="xxxxxxxxxx.txt"
2023/01/16 18:37:43 DEBUG : MyDrive/: >Lookup: node=<nil>, err=no such file or directory
2023/01/16 18:37:43 DEBUG : MyDrive/: Rename: oldName="zzzzzzzzzzzzzzzzz.txt", newName="xxxxxxxxxx.txt", newDir=MyDrive/
2023/01/16 18:37:43 ERROR : MyDrive/zzzzzzzzzzzzzzzzz.txt: Dir.Rename error: Fs "combine root ''" can't rename files (no server-side Move or Copy)
2023/01/16 18:37:43 ERROR : MyDrive/zzzzzzzzzzzzzzzzz.txt: Dir.Rename error: Fs "combine root ''" can't rename files (no server-side Move or Copy)
2023/01/16 18:37:43 ERROR : IO error: Fs "combine root ''" can't rename files (no server-side Move or Copy)
2023/01/16 18:37:43 DEBUG : MyDrive/: >Rename: err=Fs "combine root ''" can't rename files (no server-side Move or Copy)

This is the root cause.

I think this is because you've included google photos in the combine which doesn't have server side move. Try removing it and see if it works?

Nick, yes, removing google photos resolved the problem, thank you.

1 Like

Unfortunately the combine can only advertise the minimum support for all the backends, so if one doesn't support Move then the combine won't.

It might be possible to change this to if one supports Move then advertise it though.

This example config seems to work ok, and moves deleted files to Trash on local file system.
I'm not yet sure what will happens to files created at the root or outside the cloud-drives on mounted combines -- how does it affect the vfs-cache?

[00_GDrv]
type = combine
upstreams = "MyDrive=00_MyDrive:" "SharedDrives=00_SharedDrives_woxenc:" "EncryptedDrives=00_xencdrives:" ".Trash-1000=local:/home/your_user_name/.local/share/Trash/files/"
# Comment-- google photos doesn't have server side move
#  Breaks ability to rename, edit re-save, or save-as
#  https://forum.rclone.org/t/rename-or-edit-save-as-files-in-nested-combine-mounted-drive-files-causes-the-error-renaming-temporary-file-input-output-error/35506/2

[local]
type = local

# Comment -  My Google Drive
[00_MyDrive]
type = drive
#export_formats = desktop
export_formats = link.html
client_id = Change_to__correct_clientID_obtained_from_Google.apps.googleusercontent.com
client_secret = Change_to_correct_secret_obtained_from_Google
token = {"access_token":"The_token_is_auto_generated_and_changed_on_first_and_each_successfull_connection_DO_NOT_MANUALLY_Unless_you_know_better_what_you_arere_doing"}

[00_Photos]
type = google photos
client_id = Change_to__correct_clientID_obtained_from_Google.apps.googleusercontent.com
client_secret = Change_to_correct_secret_obtained_from_Google
token = {"access_token":"The_token_is_auto_generated_and_changed_on_first_and_each_successfull_connection_DO_NOT_MANUALLY_Unless_you_know_better_what_you_arere_doing"}

# Comment - All shared/team drive without encrypted hidden drives
[00_SharedDrives_woencrypted]
type = combine
upstreams = "TeamDrv01=TeamDrv01:" "TeamDrv02=TeamDrv02:" "TeamDrv03=TeamDrv03:"

# Comment - Encrypted drives, can be hidden on Google in browser
[00_encdrives]
type = combine
upstreams = "decrypted01=decrypted01:" "decrypted02=decrypted02:"

[decrypted01]
type = crypt
remote = encryped01:/encrypted_folder/
password = keep_your_password1and2_safe_and_secured_or_lose_all_your_data
password2 = keep_your_password1and2_safe_and_secured_or_lose_all_your_data

[decrypted02]
type = crypt
remote = encryped02:/encrypted_folder/
password = keep_your_password1and2_safe_and_secured_or_lose_all_your_data
password2 = keep_your_password1and2_safe_and_secured_or_lose_all_your_data


# DO NOT EDIT BELOW THIS LINE
# https://rclone.org/drive/#drives
# To generate your config text below, run a command like
#   rclone backend -o config drives 00_MyDrive:
# Then copy and paste the outputted text
# ______________________________________

[TeamDrv01]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[TeamDrv02]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[TeamDrv03]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[encryped01]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[encryped02]
type = alias
remote = 00_MyDrive,team_drive=XXXXXXXXXXXXXXXXXXX,root_folder_id=:

[AllDrives]
type = combine
upstreams = "TeamDrv01=TeamDrv01:" "TeamDrv02=TeamDrv02:" "TeamDrv03=TeamDrv03:" "encryped01=encryped01:" "encryped02=encryped02:"

combine shouldn't let you create files in the root.

When mounted, combine does let me create/rename/delete files in the root, but not folder/directory.
Maybe it should be posted as a bug or linked-topic?

See the log (-vv) on creating file "zzzzzzzzzzzzz.txt", renaming to "xxxxxxxxxxxxxx.txt", and deleting.

2023/01/18 11:57:06 DEBUG : zzzzzzzzzzzzz.txt: vfs cache: starting upload
2023/01/18 11:57:06 ERROR : zzzzzzzzzzzzz.txt: Failed to copy: combine for remote "zzzzzzzzzzzzz.txt": directory not found
2023/01/18 11:57:06 ERROR : zzzzzzzzzzzzz.txt: vfs cache: failed to upload try #1, will retry in 10s: vfs cache: failed to transfer file from cache to remote: combine for remote "zzzzzzzzzzzzz.txt": directory not found
2023/01/18 11:57:12 DEBUG : /: Lookup: name="xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:12 DEBUG : /: Lookup: name="xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:12 DEBUG : /: Rename: oldName="zzzzzzzzzzzzz.txt", newName="xxxxxxxxxxxxxx.txt", newDir=/
2023/01/18 11:57:12 INFO  : zzzzzzzzzzzzz.txt: vfs cache: renamed in cache to "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:12 DEBUG : xxxxxxxxxxxxxx.txt: Updating file with <nil> 0xc00882c240
2023/01/18 11:57:12 DEBUG : : Added virtual directory entry vDel: "zzzzzzzzzzzzz.txt"
2023/01/18 11:57:12 DEBUG : : Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:12 DEBUG : /: >Rename: err=<nil>
2023/01/18 11:57:12 DEBUG : /: Invalidating "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:12 DEBUG : /: Attr: 
2023/01/18 11:57:12 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:12 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:12 DEBUG : /: Lookup: name=".Trash-1000"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=.Trash-1000/, err=<nil>
2023/01/18 11:57:12 DEBUG : .Trash-1000/: Attr: 
2023/01/18 11:57:12 DEBUG : .Trash-1000/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:12 DEBUG : /: Lookup: name="xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=xxxxxxxxxxxxxx.txt, err=<nil>
2023/01/18 11:57:12 DEBUG : xxxxxxxxxxxxxx.txt: Attr: 
2023/01/18 11:57:12 DEBUG : xxxxxxxxxxxxxx.txt: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:12 DEBUG : /: Lookup: name=".hidden"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:12 DEBUG : /: Lookup: name=".sh_thumbnails"
2023/01/18 11:57:12 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:13 DEBUG : /: Lookup: name=".sh_thumbnails"
2023/01/18 11:57:13 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name="xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=xxxxxxxxxxxxxx.txt, err=<nil>
2023/01/18 11:57:16 DEBUG : xxxxxxxxxxxxxx.txt: Attr: 
2023/01/18 11:57:16 DEBUG : xxxxxxxxxxxxxx.txt: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : /: Attr: 
2023/01/18 11:57:16 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash-1000"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=.Trash-1000/, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/: Lookup: name="info"
2023/01/18 11:57:16 DEBUG : .Trash-1000/: >Lookup: node=.Trash-1000/info/, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/: Lookup: name="files"
2023/01/18 11:57:16 DEBUG : .Trash-1000/: >Lookup: node=.Trash-1000/files/, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Lookup: name="xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Create: name="xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Open: flags=O_RDONLY|O_CREATE|O_EXCL
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: newRWFileHandle: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >newRWFileHandle: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >Open: fd=.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw), err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Create: node=.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo, handle=&{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: Flush: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008cdd240): RWFileHandle.Flush
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: >Flush: err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: Release: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008cdd240): RWFileHandle.Release
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008cdd240): close: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008cdd240): >close: err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: >Release: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Lookup: name="xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Create: name="xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: Open: flags=O_RDWR|O_CREATE|O_EXCL
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: newRWFileHandle: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): openPending: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: vfs cache: truncate to size=0 (not needed as size correct)
2023/01/18 11:57:16 DEBUG : .Trash-1000/info: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): >openPending: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: >newRWFileHandle: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: >Open: fd=.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw), err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Create: node=.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1, handle=&{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw)}, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw)}: Write: len=70, offset=0
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): _writeAt: size=70, off=0
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): >_writeAt: n=70, err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw)}: >Write: written=70, err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw)}: Flush: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): RWFileHandle.Flush
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw)}: >Flush: err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1 (rw)}: Release: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): RWFileHandle.Release
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): close: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Rename: oldName="xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1", newName="xxxxxxxxxxxxxx.txt.trashinfo", newDir=.Trash-1000/info/
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: vfs cache: setting modification time to 2023-01-18 11:57:16.507719666 -0800 PST m=+44.113802171
2023/01/18 11:57:16 INFO  : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: vfs cache: queuing for upload in 5s
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1(0xc008cdd3c0): >close: err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: >Release: err=<nil>
2023/01/18 11:57:16 INFO  : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1: vfs cache: renamed in cache to ".Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Updating file with <nil> 0xc0088e0600
2023/01/18 11:57:16 DEBUG : .Trash-1000/info: Added virtual directory entry vDel: "xxxxxxxxxxxxxx.txt.trashinfo.FJ79Y1"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Rename: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Invalidating "xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Lookup: name="xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Rename: oldName="xxxxxxxxxxxxxx.txt", newName="xxxxxxxxxxxxxx.txt", newDir=.Trash-1000/files/
2023/01/18 11:57:16 INFO  : xxxxxxxxxxxxxx.txt: vfs cache: renamed in cache to ".Trash-1000/files/xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/xxxxxxxxxxxxxx.txt: Updating file with <nil> 0xc00882c240
2023/01/18 11:57:16 DEBUG : : Added virtual directory entry vDel: "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : /: >Rename: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Invalidating "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : /: Attr: 
2023/01/18 11:57:16 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: Lookup: name="xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/: >Lookup: node=.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >Attr: a=valid=1s ino=0 size=70 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Open: flags=OpenReadOnly
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Open: flags=O_RDONLY
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: newRWFileHandle: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >newRWFileHandle: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >Open: fd=.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw), err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: >Open: fh=&{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}, err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: Read: len=4096, offset=0
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): _readAt: size=4096, off=0
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): openPending: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: truncate to size=70 (not needed as size correct)
2023/01/18 11:57:16 DEBUG : .Trash-1000/info: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): >openPending: err=<nil>
2023/01/18 11:57:16 DEBUG : vfs cache: looking for range={Pos:0 Size:70} in [{Pos:0 Size:70}] - present true
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): >_readAt: n=70, err=EOF
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: >Read: read=70, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: Flush: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): RWFileHandle.Flush
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: >Flush: err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: Release: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): RWFileHandle.Release
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): close: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: setting modification time to 2023-01-18 11:57:16.507719666 -0800 PST m=+44.113802171
2023/01/18 11:57:16 INFO  : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: queuing for upload in 5s
2023/01/18 11:57:16 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo(0xc008966000): >close: err=<nil>
2023/01/18 11:57:16 DEBUG : &{.Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo (rw)}: >Release: err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Lookup: name="Plain Text.txt"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Lookup: node=.Trash-1000/files/Plain Text.txt, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/Plain Text.txt: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/Plain Text.txt: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Lookup: name="xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Lookup: node=.Trash-1000/files/xxxxxxxxxxxxxx.txt, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/xxxxxxxxxxxxxx.txt: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/xxxxxxxxxxxxxx.txt: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Lookup: name="mm.txt"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Lookup: node=.Trash-1000/files/mm.txt, err=<nil>
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/mm.txt: Attr: 
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/mm.txt: >Attr: a=valid=1s ino=0 size=0 mode=-rw-rw-r--, err=<nil>
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: Lookup: name=".hidden"
2023/01/18 11:57:16 DEBUG : .Trash-1000/files/: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:16 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:16 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: Attr: 
2023/01/18 11:57:19 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash-1000"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=.Trash-1000/, err=<nil>
2023/01/18 11:57:19 DEBUG : .Trash-1000/: Attr: 
2023/01/18 11:57:19 DEBUG : .Trash-1000/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: ReadDirAll: 
2023/01/18 11:57:19 DEBUG : /: >ReadDirAll: item=6, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Lookup: name="MyDrive"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=MyDrive/, err=<nil>
2023/01/18 11:57:19 DEBUG : MyDrive/: Attr: 
2023/01/18 11:57:19 DEBUG : MyDrive/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Attr: 
2023/01/18 11:57:19 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Lookup: name="SharedDrives"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=SharedDrives/, err=<nil>
2023/01/18 11:57:19 DEBUG : SharedDrives/: Attr: 
2023/01/18 11:57:19 DEBUG : SharedDrives/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Lookup: name="EncryptedDrives"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=EncryptedDrives/, err=<nil>
2023/01/18 11:57:19 DEBUG : EncryptedDrives/: Attr: 
2023/01/18 11:57:19 DEBUG : EncryptedDrives/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Attr: 
2023/01/18 11:57:19 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: Lookup: name=".Trash"
2023/01/18 11:57:19 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/18 11:57:19 DEBUG : /: ReadDirAll: 
2023/01/18 11:57:19 DEBUG : /: >ReadDirAll: item=6, err=<nil>
2023/01/18 11:57:19 DEBUG : /: Attr: 
2023/01/18 11:57:19 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxrwxr-x, err=<nil>
2023/01/18 11:57:21 DEBUG : .Trash-1000/files/xxxxxxxxxxxxxx.txt: vfs cache: starting upload
2023/01/18 11:57:21 INFO  : .Trash-1000/files/xxxxxxxxxxxxxx.txt: Copied (new)
2023/01/18 11:57:21 DEBUG : .Trash-1000/files/xxxxxxxxxxxxxx.txt: vfs cache: fingerprint now "0,2023-01-18 19:57:01.338404097 +0000 UTC"
2023/01/18 11:57:21 DEBUG : .Trash-1000/files/xxxxxxxxxxxxxx.txt: vfs cache: writeback object to VFS layer
2023/01/18 11:57:21 DEBUG : .Trash-1000/files: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt"
2023/01/18 11:57:21 INFO  : .Trash-1000/files/xxxxxxxxxxxxxx.txt: vfs cache: upload succeeded try #2
2023/01/18 11:57:21 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: starting upload
2023/01/18 11:57:21 INFO  : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: Copied (new)
2023/01/18 11:57:21 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: fingerprint now "70,2023-01-18 19:57:16.507719666 +0000 UTC"
2023/01/18 11:57:21 DEBUG : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: writeback object to VFS layer
2023/01/18 11:57:21 DEBUG : .Trash-1000/info: Added virtual directory entry vAddFile: "xxxxxxxxxxxxxx.txt.trashinfo"
2023/01/18 11:57:21 INFO  : .Trash-1000/info/xxxxxxxxxxxxxx.txt.trashinfo: vfs cache: upload succeeded try #1
^C2023/01/18 11:57:33 INFO  : Signal received: interrupt
2023/01/18 11:57:33 DEBUG : vfs cache: cleaner exiting

I see what you mean. The VFS with --vfs-cache-mode writes or full will let you create the file in the root, but it can then never upload it.

This problem isn't unique to the combine backend - if you made a local backend with a directory you couldn't write to, you'd have the same problem.

I'm not sure how to solve this - in general you don't know if you can write to a directory until you try.

@ncw Nick, Is there a way to test-for/catch such ERROR when in remote roots (fail to copy/upload), prevent the file creation, and pass the ERROR message to the gui (file manager)? Similar to trying to create a folder at combine root? I'm not sure if such code should go in rclone or fusemount. If better to add it in fusemount, then maybe you can send them a request?

Alas, no.

The writeback of the file is asynchronous so the file manager isn't waiting for rclone's reply.

You could try setting --vfs-write-back 0 - that might report the error directly to the explorer.

  --vfs-write-back Duration                Time to writeback files after last use when using cache (default 5s)

Tried --vfs-write-back 0, no report to gui.
How does creating folder/dir work?
Dir.Mkdir fail is reported to gui, can file creation be made with a similar function in mounted combines (e.g. File.Mkfile)?

$ rclone mount 00_GDrives: ~/GDrives --vfs-cache-mode=writes --vfs-write-back=0 

2023/01/20 10:08:47 ERROR : SharedDrives/: Dir.Mkdir failed to create directory: combine for remote "New Folder": directory not found
2023/01/20 10:09:40 ERROR : SharedDrives/Plain Text.txt: Failed to copy: combine for remote "Plain Text.txt": directory not found
2023/01/20 10:09:40 ERROR : vfs cache: item close failed: vfs cache: failed to transfer file from cache to remote: combine for remote "Plain Text.txt": directory not found
2023/01/20 10:09:40 ERROR : SharedDrives/Plain Text.txt(0xc008fff180): RWFileHandle.Release error: vfs cache: failed to transfer file from cache to remote: combine for remote "Plain Text.txt": directory not found

It should be reported directly to the GUI if it fails - yes.

File creation happens asynchronously unfortunately - that is a fact of life we can't change as it is how the OS works.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.