# One line summary of the problem: mv command fails: "File exists" on cifs mount on kernel>=5.7.8 # Full description of the problem/report: Since v5.7.8 (v5.4.51 for -lts), there appears to be a regression with cifs mounts; mv commands fail with a "File exists" when attempting to overwrite a file. Similarly, rsync commands which create a temporary file during transfer and then attempt to move it into place after copying fail ("File Exists (17)"). I believe this is related to this commit: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/fs/cifs/inode.c?id=9ffad9263b467efd8f8dc7ae1941a0a655a2bab2 The mount in question is from a Drobo FS NAS device, and is forced to SMB1 (`vers=1.0` specified). Running v5.7.7 or 5.4.50 does not exhibit this behavior, behavior was confirmed on 5.7.8, 5.7.9, 5.4.51 and 5.4.52. These users appear to be experiencing the same issue: 1) https://serverfault.com/questions/1025734/cifs-automounts-suddenly-stopped-working 2) https://unix.stackexchange.com/questions/599281/cifs-mount-is-returning-errors-when-operating-on-remote-files-file-exists-inte # Most recent kernel version which did not have the bug: 5.7.7 / 5.4.50 # A small shell script or example program which triggers the problem (if possible): [vagrant@archlinux ~]$ uname -a Linux archlinux 5.7.9-arch1-1 #1 SMP PREEMPT Thu, 16 Jul 2020 19:34:49 +0000 x86_64 GNU/Linux # Same behavior seen on Linux archlinux 5.4.52-1-lts #1 SMP Thu, 16 Jul 2020 19:35:06 +0000 x86_64 GNU/Linux [vagrant@archlinux ~]$ cd /mnt/drobo/Share/cifs-test/ [vagrant@archlinux cifs-test]$ touch a b [vagrant@archlinux cifs-test]$ mv a b mv: cannot move 'a' to 'b': File exists [vagrant@archlinux cifs-test]$ mkdir -p /tmp/sync_dir [vagrant@archlinux cifs-test]$ touch /tmp/sync_dir/foo [vagrant@archlinux cifs-test]$ rsync -rap /tmp/sync_dir . [vagrant@archlinux cifs-test]$ touch /tmp/sync_dir/foo [vagrant@archlinux cifs-test]$ rsync -rap /tmp/sync_dir . rsync: [receiver] rename "/mnt/drobo/Share/cifs-test/sync_dir/.foo.FQiit5" -> "sync_dir/foo": File exists (17) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1287) [sender=3.2.2] ## Behavior as expected on older kernel: [vagrant@archlinux ~]$ uname -a Linux archlinux 5.7.7-arch1-1 #1 SMP PREEMPT Wed, 01 Jul 2020 14:53:16 +0000 x86_64 GNU/Linux # Same behavior seen on Linux archlinux 5.4.50-1-lts #1 SMP Wed, 01 Jul 2020 14:53:03 +0000 x86_64 GNU/Linux [vagrant@archlinux ~]$ cd /mnt/drobo/Share/cifs-test/ [vagrant@archlinux cifs-test]$ touch a b [vagrant@archlinux cifs-test]$ mv a b [vagrant@archlinux cifs-test]$ mkdir -p /tmp/sync_dir [vagrant@archlinux cifs-test]$ touch /tmp/sync_dir/foo [vagrant@archlinux cifs-test]$ rsync -rap /tmp/sync_dir . [vagrant@archlinux cifs-test]$ touch /tmp/sync_dir/foo [vagrant@archlinux cifs-test]$ rsync -rap /tmp/sync_dir . [vagrant@archlinux cifs-test]$ # Environment: Arch Linux CIFS mount (vers=1.0) from Drobo FS NAS device CIFS share mount information: systemd-1 on /mnt/drobo/Share type autofs (rw,relatime,fd=44,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12139) //10.76.9.11/Share on /mnt/drobo/Share type cifs (rw,relatime,vers=1.0,cache=strict,username=XXXXXXX,uid=0,noforceuid,gid=0,noforcegid,addr=10.76.9.11,file_mode=0775,dir_mode=0775,nocase,soft,nounix,serverino,mapposix,nobrl,noperm,rsize=61440,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,x-systemd.automount) Regards, Patrick Fernie