Rename deadlock possible with Samba and ZFS On Linux in case insensitive mode

Richard Sharpe realrichardsharpe at gmail.com
Wed Dec 23 20:56:45 UTC 2015


Hi folks,

We have just run into a problem with Samba and ZFS On Linux so I
thought I would let people know what the issue is.

We run ZFS On Linux in case-insensitive mode. During an FSCT test we
started seeing deadlocks. We tracked the deadlocks down to renames and
lock_rename in the Linux kernel deadlocking while trying to take the
node-specific i_mutex twice.

This happened because two path names were used in the rename,
Internally we had a path like a/some-path/SomeOtherPath/SomeFile.xyz
for the source of the rename and windows gave us
A/some-path/SomeOtherPath/SomeOtherFile.xyz for the destination of the
rename.

The only difference was the case of the first component.

Since ZFS On Linux currently does not call d_add_ci in zpl_lookup when
the file system is Case Insensitive it results in two dentries in the
file pointing to the same inode and will cause deadlocks on rename.

A bug has been filed against the ZoL github repository:

        https://github.com/zfsonlinux/zfs/issues/4136

You can work around it to some extent in Samba but a full solution
will be a problem and there appears to be a simple solution in ZFS On
Linux.

-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)



More information about the samba-technical mailing list