svn commit: r348421 - head/sys/kern

Konstantin Belousov kostikbel at gmail.com
Fri May 31 17:10:17 UTC 2019


On Thu, May 30, 2019 at 08:14:42PM -0700, Benjamin Kaduk wrote:
> On Thu, May 30, 2019 at 8:04 AM Konstantin Belousov <kib at freebsd.org> wrote:
> 
> > Author: kib
> > Date: Thu May 30 15:04:09 2019
> > New Revision: 348421
> > URL: https://svnweb.freebsd.org/changeset/base/348421
> >
> > Log:
> >   Silence witness warning about duplicated mutex type.
> >
> >   The order is correct, it is nullfs vnode interlock -> lower vnode
> >   interlock.  vop_stdadd_writecount() is called from nullfs
> >   VOP_ADD_WRITECOUNT() and both take interlocks.
> >
> >   Requested by: markj
> >   Sponsored by: The FreeBSD Foundation
> >   MFC after:    2 weeks
> >
> > Modified:
> >   head/sys/kern/vfs_default.c
> >
> > Modified: head/sys/kern/vfs_default.c
> >
> > ==============================================================================
> > --- head/sys/kern/vfs_default.c Thu May 30 14:40:23 2019        (r348420)
> > +++ head/sys/kern/vfs_default.c Thu May 30 15:04:09 2019        (r348421)
> > @@ -1113,7 +1113,7 @@ vop_stdadd_writecount(struct vop_add_writecount_args
> > *
> >         int error;
> >
> >         vp = ap->a_vp;
> > -       VI_LOCK(vp);
> > +       VI_LOCK_FLAGS(vp, MTX_DUPOK);
> >         if (vp->v_writecount < 0) {
> >                 error = ETXTBSY;
> >         } else {
> >
> >
> Does this merit a comment justifying the use of DUPOK?

This is a common pattern in nullfs, because if upper layer operations is
done which requires vnode interlock, it is very common to have the op
done on lower layer as well, when you need to take the lower layer vnode
interlock.  I think it is obvious enough what happens when the flag is
used.


More information about the svn-src-head mailing list