diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_refcount.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_refcount.c | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/xfs/libxfs/xfs_refcount.c b/fs/xfs/libxfs/xfs_refcount.c index c1c65774dcc2..b6e21433925c 100644 --- a/fs/xfs/libxfs/xfs_refcount.c +++ b/fs/xfs/libxfs/xfs_refcount.c @@ -1151,8 +1151,10 @@ xfs_refcount_adjust_extents(  				fsbno = XFS_AGB_TO_FSB(cur->bc_mp,  						cur->bc_ag.pag->pag_agno,  						tmp.rc_startblock); -				xfs_free_extent_later(cur->bc_tp, fsbno, +				error = xfs_free_extent_later(cur->bc_tp, fsbno,  						  tmp.rc_blockcount, NULL); +				if (error) +					goto out_error;  			}  			(*agbno) += tmp.rc_blockcount; @@ -1210,8 +1212,10 @@ xfs_refcount_adjust_extents(  			fsbno = XFS_AGB_TO_FSB(cur->bc_mp,  					cur->bc_ag.pag->pag_agno,  					ext.rc_startblock); -			xfs_free_extent_later(cur->bc_tp, fsbno, +			error = xfs_free_extent_later(cur->bc_tp, fsbno,  					ext.rc_blockcount, NULL); +			if (error) +				goto out_error;  		}  skip: @@ -1976,7 +1980,10 @@ xfs_refcount_recover_cow_leftovers(  				rr->rr_rrec.rc_blockcount);  		/* Free the block. */ -		xfs_free_extent_later(tp, fsb, rr->rr_rrec.rc_blockcount, NULL); +		error = xfs_free_extent_later(tp, fsb, +				rr->rr_rrec.rc_blockcount, NULL); +		if (error) +			goto out_trans;  		error = xfs_trans_commit(tp);  		if (error)  | 
