Deadlock with umount -f involving tmpfs on top of ZFS on r271170
Bryan Drewery
bdrewery at FreeBSD.org
Wed Sep 24 15:21:18 UTC 2014
On 9/24/2014 8:26 AM, Peter Holm wrote:
> On Wed, Sep 24, 2014 at 01:27:58PM +0300, Konstantin Belousov wrote:
>> On Tue, Sep 23, 2014 at 08:53:19PM -0500, Bryan Drewery wrote:
>>> I tried your patch and still ran into the deadlock. Here is the debug
>>> information: https://people.freebsd.org/~bdrewery/vfs_deadlock.2.txt
>>
>> I see what is going on. Previous patch cannot help there.
>>
>> The problem is that kern_linkat() starts write with vn_start_write(9),
>> and then tries to execute namei(9) with a path potentially crossing
>> the mount point. If the mount point is being unmounted, unmount cannot
>> lay suspension on the filesystem due to writer, but it owns the covered
>> vnode lock. On the other hand, namei(9) is unable to cross the mount
>> point since covered vnode is locked, thus writer does not make progress.
>>
>> The similar issue exists in rename code. The deadlock is only possible
>> for filesystems which suspend writes on unmount; such fs are UFS and tmpfs.
>>
>> Try this.
>>
>> diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
>> index b3b7ed5..9775480 100644
>
> I had been trying different scenarios without much luck, but with
> your description I got the problem instantly. :)
>
> The patch is an improvement, but:
>
> http://people.freebsd.org/~pho/stress/log/kostik718.txt
>
> - Peter
>
By the way this was my test script:
http://dpaste.com/35AYZZ7
It could be simplified a lot.
--
Regards,
Bryan Drewery
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-fs/attachments/20140924/e0b034a4/attachment.sig>
More information about the freebsd-fs
mailing list