Date: Sun, 12 Oct 2014 17:20:16 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: Bruce Evans <brde@optusnet.com.au> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r272952 - in head/sys: fs/ext2fs fs/msdosfs ufs/ffs Message-ID: <20141012142016.GI2153@kib.kiev.ua> In-Reply-To: <20141013003313.G932@besplex.bde.org> References: <201410111909.s9BJ9ueU031008@svn.freebsd.org> <20141013003313.G932@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Oct 13, 2014 at 12:39:54AM +1100, Bruce Evans wrote: > > @@ -627,7 +627,7 @@ ffs_read(ap) > > } > > > > if ((error == 0 || uio->uio_resid != orig_resid) && > > - (vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && > > + (vp->v_mount->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0 && > > (ip->i_flag & IN_ACCESS) == 0) { > > VI_LOCK(vp); > > ip->i_flag |= IN_ACCESS; > > > > Is it correct for only ffs to acquire the vnode interlock? I think it > is, but don't remember which ffs-only feature requires it. We either hold the vnode lock exclusive, or shared + own the vnode interlock, for i_flag modifications. Since this is ffs_read(), which is entered with the vnode shared locked, the interlock must be acquired. Both msdosfs and ext2fs do not enable the shared locking mode for the lockmgr locks serving as the vnodes locks, so msdosfs_read() and ext2_read() are executed with vnode locked exclusively.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141012142016.GI2153>