The Samba-Bugzilla – Bug 12156
File change notify does not occur on file rename
Last modified: 2016-08-19 14:36:59 UTC
The original bug was filed in the Ubuntu Launchpad: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1576594
Here is a verbatim copy of the issue and my addition.
----- snip -----
MacOS 10.11.4 connecting to Samba 4.3.8 on Ubuntu Server 16.04
Upon rename of file by another process on the system, Samba does not notify connected clients of update (directory listing does not refresh). New file/directory creation works just fine, as does moving a file to another directory.
For example, if I have a samba share called "CatPics" pointing at /mnt/CatPics, I can ssh into the machine, "cd /mnt/CatPics" and enter "touch LongCat.jpg", creating the file. This will cause a notify of the update to connected clients which will then display that file. If I then enter "mv LongCat.jpg CeilingCat.jpg", connected OSX clients are not notified of the rename (and attempting to open the file through samba will fail, as it no longer exists). "LongCat.jpg" continues to appear in the directory listing. If you move LongCat.jpg to another directory through SSH, the display refreshes but continues to display the old filename in the new location.
Filesystem in this case is BTRFS, but have confirmed the issue also occurs on EXT4, so not an issue there.
I have tested this same process on Windows 10 clients and it works fine.
That said, I've tested with the OSX client against older versions of Samba (3.6.25 in this case) and that also works fine, so it seems to be an interaction between the two.
Note that this is also more of a problem than you might think, as in Apple's infinite wisdom, OSX doesn't have a refresh button, so you can't manually update the directory listing...
What should have happened:
In the example above, OSX client should have refreshed directory listing and displayed "CeilingCat.jpg".
Description: Ubuntu 16.04 LTS
Samba package version:
*** 2:4.3.8+dfsg-0ubuntu1 500
500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
----- snip -----
I can confirm this exact behavior. When connecting via CIFS, a proper notification is sent. When connecting via SMB2 or SMB3 protocol, the notification is not sent. This affects for example creating folders, where the default naming is something like "Untitled Folder" and is then changed to the name it should be. The name never changes from "Untitled Folder" on a another Mac OS X client until the share is unmounted and mounted again.
Testing this on a Linux client, the notification is also not sent but a refresh of the folder contents shows the updated information. This is where Mac OS X apparently falls short as there is no way to successfully refresh the SMB Finder window. The usual AppleScript approach via `tell application "Finder" to tell front window to update every item` simply hides the renamed item until you browser away from the folder and back again. The latter is clearly a Mac OS X issue, while the former a problem of Samba.
See comment #3 in bug 11717.
*** This bug has been marked as a duplicate of bug 11717 ***