Re: [PATCH] xfs: recheck appropriateness of map_shared lock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 19, 2023 at 10:31:06AM -0800, Christoph Hellwig wrote:
> On Wed, Jan 18, 2023 at 05:24:58PM -0800, Darrick J. Wong wrote:
> >  	xfs_ilock(ip, lock_mode);
> > +
> > +	/*
> > +	 * It's possible that the unlocked access of the data fork to determine
> > +	 * the lock mode could have raced with another thread that was failing
> > +	 * to load the bmbt but hadn't yet torn down the iext tree.  Recheck
> > +	 * the lock mode and upgrade to an exclusive lock if we need to.
> > +	 */
> > +	if (lock_mode == XFS_ILOCK_SHARED &&
> > +	    xfs_need_iread_extents(&ip->i_df)) {
> 
> Eww.  I think the proper fix here is to make sure
> xfs_need_iread_extents does not return false until we're actually
> read the extents.  So I think we'll need a new inode flag
> XFS_INEED_READ - gets set when reading inode in btree format,
> and gets cleared at the very end of xfs_iread_extents once we know
> the read succeeded.

So I finally cleared enough off my plate to get back to this, and
reworking the patch this way *looks* promising.  It definitely fixes the
xfs/375 problems, and over the weekend I didn't see any obvious splats.

--D



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux