How to run programs that call unsupported utime on mount

What is the problem you are having with rclone?

I have recently set up funkwhale to upload music directly to a mounted Google Drive folder. It has been working quite well, but I wanted to try getting a union mount working with Mega.

Funkwhale uses django on the backend which calls the python utility function copystat which in turn calls os.utime.

I know rclone with Mega doesn't yet support modification times or hashes. So it makes sense that this call would fail. But I'm wondering what the correct place to fix this problem is.

I hacked django to ignore the OSError exception and things seem to be working well. But this isn't a permanent fix.

Is there an option to simulate/drop calls to utime? Should django be changed to expect filesystems that don't support this? Or am I simply missing something else?

Thanks for any help!

I also want thank everyone involved for making rclone, it works impressively well, better than I had hoped!

What is your rclone version (output from rclone version)

rclone --version
rclone v1.52.1
- os/arch: linux/amd64
- go version: go1.14.4

Which OS you are using and how many bits (eg Windows 7, 64 bit)

Ubuntu 18.04.1 LTS
Linux 4.15.0-106-generic x86_64 GNU/Linux

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

Google Drive and Mega

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

rclone mount \
        --config=/root/.config/rclone/rclone.conf \
        --vfs-cache-mode full \
        --vfs-cache-max-size 500M \
        --allow-other \
        --umask 0022 \
        --dir-perms 0775 \
        media:/ /mnt/share

The rclone config contents with secrets removed.

[Drive]
type = drive
(redacted)

[mega]
type = mega
(redacted)

[media]
type = union
upstreams = Drive:/ mega:/
create_policy = mfs

A log from the command with the -vv flag

The Python logs

   File "/srv/funkwhale/virtualenv/lib/python3.6/site-packages/django/db/models/fields/files.py", line 87, in save
     self.name = self.storage.save(name, content, max_length=self.field.max_length)
   File "/srv/funkwhale/virtualenv/lib/python3.6/site-packages/django/core/files/storage.py", line 52, in save
     return self._save(name, content)
   File "/srv/funkwhale/virtualenv/lib/python3.6/site-packages/django/core/files/storage.py", line 262, in _save
     file_move_safe(content.temporary_file_path(), full_path)
   File "/srv/funkwhale/virtualenv/lib/python3.6/site-packages/django/core/files/move.py", line 71, in file_move_safe
     copystat(old_file_name, new_file_name)
   File "/srv/funkwhale/virtualenv/lib/python3.6/shutil.py", line 205, in copystat
     follow_symlinks=follow)
OSError: [Errno 5] Input/output error

Is it trying to set the modification times? That would probably fail, yes.

You could try the --no-modtime flag. Not sure if that will fix it, but if it doesn't it should!

Maybe rclone should not return an error if the backend can't set modtimes? It isn't a very useful error...

1 Like

Thank you, that fixed it!

1 Like

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