Date: Wed, 24 Sep 2014 15:26:05 +0200 From: Peter Holm <peter@holm.cc> To: Konstantin Belousov <kostikbel@gmail.com> Cc: FreeBSD FS <freebsd-fs@FreeBSD.org> Subject: Re: Deadlock with umount -f involving tmpfs on top of ZFS on r271170 Message-ID: <20140924132605.GA11772@x2.osted.lan> In-Reply-To: <20140924102758.GH8870@kib.kiev.ua> References: <5420D5FC.4030600@FreeBSD.org> <20140923131244.GC8870@kib.kiev.ua> <5422240F.4080003@FreeBSD.org> <20140924102758.GH8870@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140924132605.GA11772>