diff options
Diffstat (limited to 'fs/xfs/xfs_trans_buf.c')
| -rw-r--r-- | fs/xfs/xfs_trans_buf.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index 6311b99c267..977628207b4 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c @@ -257,7 +257,8 @@ xfs_trans_read_buf_map(  	struct xfs_buf_map	*map,  	int			nmaps,  	xfs_buf_flags_t		flags, -	struct xfs_buf		**bpp) +	struct xfs_buf		**bpp, +	xfs_buf_iodone_t	verify)  {  	xfs_buf_t		*bp;  	xfs_buf_log_item_t	*bip; @@ -265,7 +266,7 @@ xfs_trans_read_buf_map(  	*bpp = NULL;  	if (!tp) { -		bp = xfs_buf_read_map(target, map, nmaps, flags); +		bp = xfs_buf_read_map(target, map, nmaps, flags, verify);  		if (!bp)  			return (flags & XBF_TRYLOCK) ?  					EAGAIN : XFS_ERROR(ENOMEM); @@ -312,7 +313,9 @@ xfs_trans_read_buf_map(  		if (!(XFS_BUF_ISDONE(bp))) {  			trace_xfs_trans_read_buf_io(bp, _RET_IP_);  			ASSERT(!XFS_BUF_ISASYNC(bp)); +			ASSERT(bp->b_iodone == NULL);  			XFS_BUF_READ(bp); +			bp->b_iodone = verify;  			xfsbdstrat(tp->t_mountp, bp);  			error = xfs_buf_iowait(bp);  			if (error) { @@ -349,7 +352,7 @@ xfs_trans_read_buf_map(  		return 0;  	} -	bp = xfs_buf_read_map(target, map, nmaps, flags); +	bp = xfs_buf_read_map(target, map, nmaps, flags, verify);  	if (bp == NULL) {  		*bpp = NULL;  		return (flags & XBF_TRYLOCK) ?  |