On Thu, May 30, 2019 at 08:14:42PM -0700, Benjamin Kaduk wrote: > On Thu, May 30, 2019 at 8:04 AM Konstantin Belousov <k...@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. _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"