Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Sep 2014 17:34:14 +0200
From:      Peter Holm <peter@holm.cc>
To:        Bryan Drewery <bdrewery@freebsd.org>
Cc:        FreeBSD FS <freebsd-fs@freebsd.org>
Subject:   Re: Deadlock with umount -f involving tmpfs on top of ZFS on r271170
Message-ID:  <20140924153414.GA15739@x2.osted.lan>
In-Reply-To: <5422E15F.8050702@FreeBSD.org>
References:  <5420D5FC.4030600@FreeBSD.org> <20140923131244.GC8870@kib.kiev.ua> <5422240F.4080003@FreeBSD.org> <20140924102758.GH8870@kib.kiev.ua> <20140924132605.GA11772@x2.osted.lan> <5422E15F.8050702@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Sep 24, 2014 at 10:21:03AM -0500, Bryan Drewery wrote:
> 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.
> 

Thank you.

Here's what I came up with:
http://people.freebsd.org/~pho/link.sh

- Peter



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140924153414.GA15739>