Date: Mon, 9 Sep 2002 16:05:16 -0700 (PDT) From: Don Lewis <dl-freebsd@catspoiler.org> To: current@FreeBSD.ORG, jeff@FreeBSD.ORG Cc: current@FreeBSD.ORG, jeff@FreeBSD.ORG Subject: Re: vnode lock assertion problem in nfs_link() Message-ID: <200209092305.g89N5Gwr093422@gw.catspoiler.org> In-Reply-To: <200209092300.g89N0Hwr093398@gw.catspoiler.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On  9 Sep, Don Lewis wrote:
> nfs_link() contains the following code:
> 
>         /*
>          * Push all writes to the server, so that the attribute cache
>          * doesn't get "out of sync" with the server.
>          * XXX There should be a better way!
>          */
>         VOP_FSYNC(vp, cnp->cn_cred, MNT_WAIT, cnp->cn_thread);
> 
> The problem is that vp is not locked by the caller, but VOP_FSYNC()
> expects its argument to be locked.
> 
> I think we can probably just lock and unlock vp around the call to
> VOP_FSYNC() ... 
Hmn, I think I just figured out this bit of code in ufs_link():
        if (tdvp != vp && (error = vn_lock(vp, LK_EXCLUSIVE, td))) {
                goto out2;
        }
It would probably be a bad thing to unconditionally lock vp if vp and
tdvp are the same ...
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209092305.g89N5Gwr093422>
