Re: [PATCH 09/13] xfs: refactor reflink functions to use xfs_trans_alloc_inode

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

 



On Thu, Jan 28, 2021 at 09:53:45AM +0000, Christoph Hellwig wrote:
> On Wed, Jan 27, 2021 at 10:01:55PM -0800, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@xxxxxxxxxx>
> > 
> > The two remaining callers of xfs_trans_reserve_quota_nblks are in the
> > reflink code.  These conversions aren't as uniform as the previous
> > conversions, so call that out in a separate patch.
> > 
> > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> > ---
> >  fs/xfs/xfs_reflink.c |   58 +++++++++++++++++++++-----------------------------
> >  1 file changed, 24 insertions(+), 34 deletions(-)
> > 
> > 
> > diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
> > index 0778b5810c26..ded86cc4764c 100644
> > --- a/fs/xfs/xfs_reflink.c
> > +++ b/fs/xfs/xfs_reflink.c
> > @@ -376,16 +376,15 @@ xfs_reflink_allocate_cow(
> >  	resblks = XFS_DIOSTRAT_SPACE_RES(mp, resaligned);
> >  
> >  	xfs_iunlock(ip, *lockmode);
> >  
> > +	error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write, resblks, 0,
> > +			false, &tp);
> > +	if (error) {
> > +		/* This function must return with ILOCK_EXCL held. */
> > +		*lockmode = XFS_ILOCK_EXCL;
> > +		xfs_ilock(ip, *lockmode);
> >  		return error;
> > +	}
> 
> The only thing that the only caller of xfs_reflink_allocate_cow does
> on error is to immediately release the lock.  So I think we are better
> off changing the calling convention instead of relocking here.

Ok, will do.

--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