diff options
Diffstat (limited to 'fs/xfs/xfs_bmap_item.c')
| -rw-r--r-- | fs/xfs/xfs_bmap_item.c | 23 | 
1 files changed, 7 insertions, 16 deletions
diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c index dd136f7275e4..e5fb008d75e8 100644 --- a/fs/xfs/xfs_bmap_item.c +++ b/fs/xfs/xfs_bmap_item.c @@ -389,7 +389,8 @@ xfs_bud_init(  int  xfs_bui_recover(  	struct xfs_mount		*mp, -	struct xfs_bui_log_item		*buip) +	struct xfs_bui_log_item		*buip, +	struct xfs_defer_ops		*dfops)  {  	int				error = 0;  	unsigned int			bui_type; @@ -404,9 +405,7 @@ xfs_bui_recover(  	xfs_exntst_t			state;  	struct xfs_trans		*tp;  	struct xfs_inode		*ip = NULL; -	struct xfs_defer_ops		dfops;  	struct xfs_bmbt_irec		irec; -	xfs_fsblock_t			firstfsb;  	ASSERT(!test_bit(XFS_BUI_RECOVERED, &buip->bui_flags)); @@ -464,7 +463,6 @@ xfs_bui_recover(  	if (VFS_I(ip)->i_nlink == 0)  		xfs_iflags_set(ip, XFS_IRECOVERY); -	xfs_defer_init(&dfops, &firstfsb);  	/* Process deferred bmap item. */  	state = (bmap->me_flags & XFS_BMAP_EXTENT_UNWRITTEN) ? @@ -479,16 +477,16 @@ xfs_bui_recover(  		break;  	default:  		error = -EFSCORRUPTED; -		goto err_dfops; +		goto err_inode;  	}  	xfs_trans_ijoin(tp, ip, 0);  	count = bmap->me_len; -	error = xfs_trans_log_finish_bmap_update(tp, budp, &dfops, type, +	error = xfs_trans_log_finish_bmap_update(tp, budp, dfops, type,  			ip, whichfork, bmap->me_startoff,  			bmap->me_startblock, &count, state);  	if (error) -		goto err_dfops; +		goto err_inode;  	if (count > 0) {  		ASSERT(type == XFS_BMAP_UNMAP); @@ -496,16 +494,11 @@ xfs_bui_recover(  		irec.br_blockcount = count;  		irec.br_startoff = bmap->me_startoff;  		irec.br_state = state; -		error = xfs_bmap_unmap_extent(tp->t_mountp, &dfops, ip, &irec); +		error = xfs_bmap_unmap_extent(tp->t_mountp, dfops, ip, &irec);  		if (error) -			goto err_dfops; +			goto err_inode;  	} -	/* Finish transaction, free inodes. */ -	error = xfs_defer_finish(&tp, &dfops); -	if (error) -		goto err_dfops; -  	set_bit(XFS_BUI_RECOVERED, &buip->bui_flags);  	error = xfs_trans_commit(tp);  	xfs_iunlock(ip, XFS_ILOCK_EXCL); @@ -513,8 +506,6 @@ xfs_bui_recover(  	return error; -err_dfops: -	xfs_defer_cancel(&dfops);  err_inode:  	xfs_trans_cancel(tp);  	if (ip) {  | 

