diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_bmap.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_bmap.c | 22 | 
1 files changed, 9 insertions, 13 deletions
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index ce41d7fe753c..932381caef1b 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -1121,15 +1121,14 @@ xfs_bmap_add_attrfork(  	mp = ip->i_mount;  	ASSERT(!XFS_NOT_DQATTACHED(mp, ip)); -	tp = xfs_trans_alloc(mp, XFS_TRANS_ADDAFORK); +  	blks = XFS_ADDAFORK_SPACE_RES(mp); -	if (rsvd) -		tp->t_flags |= XFS_TRANS_RESERVE; -	error = xfs_trans_reserve(tp, &M_RES(mp)->tr_addafork, blks, 0); -	if (error) { -		xfs_trans_cancel(tp); + +	error = xfs_trans_alloc(mp, &M_RES(mp)->tr_addafork, blks, 0, +			rsvd ? XFS_TRANS_RESERVE : 0, &tp); +	if (error)  		return error; -	} +  	xfs_ilock(ip, XFS_ILOCK_EXCL);  	error = xfs_trans_reserve_quota_nblks(tp, ip, blks, 0, rsvd ?  			XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_FORCE_RES : @@ -6026,13 +6025,10 @@ xfs_bmap_split_extent(  	xfs_fsblock_t           firstfsb;  	int                     error; -	tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); -	error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, -			XFS_DIOSTRAT_SPACE_RES(mp, 0), 0); -	if (error) { -		xfs_trans_cancel(tp); +	error = xfs_trans_alloc(mp, &M_RES(mp)->tr_write, +			XFS_DIOSTRAT_SPACE_RES(mp, 0), 0, 0, &tp); +	if (error)  		return error; -	}  	xfs_ilock(ip, XFS_ILOCK_EXCL);  	xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);  |