[Samba] vfs fruit disk_free fails on tmsize overflow with macOS Time Machine
Art MG
smblock at artmg.org
Tue Feb 18 14:54:24 UTC 2020
Hi
I apt installed Samba Version 4.9.5-Debian (latest in their repos) on a fresh-built Raspbian Buster Lite release 2020-02-05. I put together the configuration outlined below by using the docs at https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X and https://www.samba.org/samba/docs/current/man-html/vfs_fruit.8.html. The underlying usb hard drive is an ext4 partition mounted in fstab, on a new, clean drive with no issues reporting.
# /etc/samba/smb.conf
[global]
server string = My Server
map to guest = bad user
logging = syslog at 4
vfs objects = catia fruit streams_xattr
fruit:metadata = stream
fruit:model = MacPro
[TimeMachineBackup]
comment = Back up Mac with Time Machine
path = /mnt/USB1HDD/TimeMachine
guest ok = Yes
read only = No
fruit:time machine = yes
fruit:time machine max size = 900G
First time around I successfully connect to the share, and ran the Time Machine backup from MacOS Mojave version 10.14.6 (18G2022). At the beginning the Time Machine client correctly reports the space available, according to the max size in the config. The first backup completes successfully, creating its Client Name.sparsebundle folder and contents. However on subsequent occasions the client fails to connect to the share. On the client the Finder returns the error `The operation can’t be completed because the original item for “TimeMachineBackup” can’t be found` and using the command line gives `mount_smbfs: mount error: /backup: Permission denied`. smbd logs the following errors:
../source3/modules/vfs_fruit.c:6995(fruit_tmsize_do_dirent)
fruit_tmsize_do_dirent: tmsize overflow: bandsize [8388608] nbands [32547]
../source3/smbd/dfree.c:125(sys_disk_free)
sys_disk_free: VFS disk_free failed. Error was : Invalid or incomplete multibyte or wide character
FYI: That second line refers to the myriad files that the Time Machine backup creates inside the '.sparsebundle' subfolder 'bands'. NB: in my case the folder path includes a 'space' character as my client renamed itself to ClientName (53169). In my case there are 32,547 of these files in the folder - each 8,388,608 bytes in size with a hex serial name (from 0 to 808f - skipping a few on the way) totalling 264,730,800 bytes.
So I have tried adding:
[Global]
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
min protocol = SMB2
and wiping the previous backup. The first backup works fine, again, and the same issue occurs afterwards. I realise that the latest version my distro offers is 11 months old, but I have checked the 4.10.0, 4.11.0 and 4.11.x-.6 release notes but can find no issues that appear to relate within these components, nor in 4.12.0rc2
The only thing I can do to workaround is to remove the limit - deleting the following line from the config DOES allow me to back up a second time.
fruit:time machine max size = 900G
However this is not functionally adequate for my scenario, I need to keep half the disk available for other data
Please advise what I should try next.
Thanks. Art
More information about the samba
mailing list