Date: Wed, 02 Jun 2010 16:15:08 +0300 From: Mikolaj Golub <to.my.trociny@gmail.com> To: Kostik Belousov <kostikbel@gmail.com> Cc: freebsd-fs@freebsd.org Subject: Re: nullfs: vop_rename: fdvp is locked but should not be Message-ID: <867hmho9sz.fsf@zhuzha.ua1> In-Reply-To: <20100602094504.GN83316@deviant.kiev.zoral.com.ua> (Kostik Belousov's message of "Wed, 2 Jun 2010 12:45:04 %2B0300") References: <86fx16onx6.fsf@zhuzha.ua1> <20100601140721.GH83316@deviant.kiev.zoral.com.ua> <86bpbtonma.fsf@zhuzha.ua1> <20100602094504.GN83316@deviant.kiev.zoral.com.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-= 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. */ --=-=-=--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?867hmho9sz.fsf>