From owner-freebsd-fs@FreeBSD.ORG Wed Jun 2 13:15:13 2010 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD72A1065676 for ; Wed, 2 Jun 2010 13:15:13 +0000 (UTC) (envelope-from to.my.trociny@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.152]) by mx1.freebsd.org (Postfix) with ESMTP id 475238FC14 for ; Wed, 2 Jun 2010 13:15:12 +0000 (UTC) Received: by fg-out-1718.google.com with SMTP id d23so1723494fga.13 for ; Wed, 02 Jun 2010 06:15:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject :organization:references:date:in-reply-to:message-id:user-agent :mime-version:content-type; bh=MrJDWLGps8uaulG9EGeHRCiQJEmlBHjvTHq6tSrwtnc=; b=pMHM0lSpQbJjaOYULIg84eia6jOnAhU8JHo77gUjIkaaVuWjC3ViwYp6G7cjKe3nqE iLZSu9x3SFyEvH9FfMG63i8Z0W2VOhtXBtG4ve/UKDEK60cczvlcq/Aq8eQbiTU6oC3n t4+K3+sfXBGXGkCpqAVGLje66ZVPESLwkpj/A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:organization:references:date:in-reply-to :message-id:user-agent:mime-version:content-type; b=IhobW9jyDxvfFo6XbyKwKqP97SNdq/mSytqcLetIeD59qch8iWLAoCoq5afrfPKjYO SKvN9Y5wUw2rqdLsITMCIhQD73IpEj9wShX3p9v+qq+IcnWVBUDnmKfiOOCZNyX+5B2t ZEF/47oR4I+0U/RKn3CyGm43CPyEfRVqSOTUM= Received: by 10.204.47.17 with SMTP id l17mr1791509bkf.82.1275484511985; Wed, 02 Jun 2010 06:15:11 -0700 (PDT) Received: from localhost (ua1.etadirect.net [91.198.140.16]) by mx.google.com with ESMTPS id v2sm8136740bkz.19.2010.06.02.06.15.10 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 02 Jun 2010 06:15:10 -0700 (PDT) From: Mikolaj Golub To: Kostik Belousov Organization: TOA Ukraine References: <86fx16onx6.fsf@zhuzha.ua1> <20100601140721.GH83316@deviant.kiev.zoral.com.ua> <86bpbtonma.fsf@zhuzha.ua1> <20100602094504.GN83316@deviant.kiev.zoral.com.ua> Date: Wed, 02 Jun 2010 16:15:08 +0300 In-Reply-To: <20100602094504.GN83316@deviant.kiev.zoral.com.ua> (Kostik Belousov's message of "Wed, 2 Jun 2010 12:45:04 +0300") Message-ID: <867hmho9sz.fsf@zhuzha.ua1> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (berkeley-unix) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: freebsd-fs@freebsd.org Subject: Re: nullfs: vop_rename: fdvp is locked but should not be X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jun 2010 13:15:13 -0000 --=-=-= On Wed, 2 Jun 2010 12:45:04 +0300 Kostik Belousov wrote: KB> I do not think that the attached patch is the right solution Again, try. KB> comparing the pointers to the vnode locks instead of the vnode pointers. KB> Something like KB> if (a->a_tdvp->v_vnlock != a->a_fdvp->v_vnlock ... Please look at the attached patch. I have tried it on CURRENT. -- Mikolaj Golub --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=vfs_subr.c.vop_rename_pre.patch Index: sys/kern/vfs_subr.c =================================================================== --- sys/kern/vfs_subr.c (revision 208731) +++ sys/kern/vfs_subr.c (working copy) @@ -3793,9 +3793,10 @@ vop_rename_pre(void *ap) ASSERT_VI_UNLOCKED(a->a_fdvp, "VOP_RENAME"); /* Check the source (from). */ - if (a->a_tdvp != a->a_fdvp && a->a_tvp != a->a_fdvp) + if (a->a_tdvp->v_vnlock != a->a_fdvp->v_vnlock && + (a->a_tvp == NULL || a->a_tvp->v_vnlock != a->a_fdvp->v_vnlock)) ASSERT_VOP_UNLOCKED(a->a_fdvp, "vop_rename: fdvp locked"); - if (a->a_tvp != a->a_fvp) + if (a->a_tvp == NULL || a->a_tvp->v_vnlock != a->a_fvp->v_vnlock) ASSERT_VOP_UNLOCKED(a->a_fvp, "vop_rename: fvp locked"); /* Check the target. */ --=-=-=--