From owner-freebsd-current@FreeBSD.ORG Wed Jul 17 11:27:16 2013 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 6B8CDA3B; Wed, 17 Jul 2013 11:27:16 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 1858CA3E; Wed, 17 Jul 2013 11:27:14 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id OAA02725; Wed, 17 Jul 2013 14:27:13 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1UzPt3-00007u-04; Wed, 17 Jul 2013 14:27:13 +0300 Message-ID: <51E67F54.9080800@FreeBSD.org> Date: Wed, 17 Jul 2013 14:26:12 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130708 Thunderbird/17.0.7 MIME-Version: 1.0 To: Adrian Chadd Subject: Re: Deadlock in nullfs/zfs somewhere References: <51DCFEDA.1090901@FreeBSD.org> <51E59FD9.4020103@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-fs@FreeBSD.org, freebsd-current X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jul 2013 11:27:16 -0000 on 16/07/2013 22:40 Adrian Chadd said the following: > :( So it's a deadlock. Ok, so what's next? A creative process... One possibility is to add getnewvnode_reserve() calls before the ZFS transaction beginnings in the places where a new vnode/znode may have to be allocated within a transaction. This looks like a quick and cheap solution but it makes the code somewhat messier. Another possibility is to change something in VFS machinery, so that VOP_RECLAIM getting blocked for one filesystem does not prevent vnode allocation for other filesystems. I could think of other possible solutions via infrastructural changes in VFS or ZFS... -- Andriy Gapon