diff options
Diffstat (limited to 'fs/xfs/xfs_rtalloc.c')
| -rw-r--r-- | fs/xfs/xfs_rtalloc.c | 48 | 
1 files changed, 19 insertions, 29 deletions
| diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index 35561a511b57..87323f1ded64 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c @@ -112,7 +112,7 @@ xfs_growfs_rt_alloc(  		 * Lock the inode.  		 */  		xfs_ilock(ip, XFS_ILOCK_EXCL); -		xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL); +		xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);  		xfs_bmap_init(&flist, &firstblock);  		/* @@ -120,9 +120,9 @@ xfs_growfs_rt_alloc(  		 */  		nmap = 1;  		cancelflags |= XFS_TRANS_ABORT; -		error = xfs_bmapi(tp, ip, oblocks, nblocks - oblocks, -			XFS_BMAPI_WRITE | XFS_BMAPI_METADATA, &firstblock, -			resblks, &map, &nmap, &flist); +		error = xfs_bmapi_write(tp, ip, oblocks, nblocks - oblocks, +					XFS_BMAPI_METADATA, &firstblock, +					resblks, &map, &nmap, &flist);  		if (!error && nmap < 1)  			error = XFS_ERROR(ENOSPC);  		if (error) @@ -155,7 +155,7 @@ xfs_growfs_rt_alloc(  			 * Lock the bitmap inode.  			 */  			xfs_ilock(ip, XFS_ILOCK_EXCL); -			xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL); +			xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);  			/*  			 * Get a buffer for the block.  			 */ @@ -856,33 +856,23 @@ xfs_rtbuf_get(  	xfs_buf_t	**bpp)		/* output: buffer for the block */  {  	xfs_buf_t	*bp;		/* block buffer, result */ -	xfs_daddr_t	d;		/* disk addr of block */ -	int		error;		/* error value */ -	xfs_fsblock_t	fsb;		/* fs block number for block */  	xfs_inode_t	*ip;		/* bitmap or summary inode */ +	xfs_bmbt_irec_t	map; +	int		nmap; +	int		error;		/* error value */  	ip = issum ? mp->m_rsumip : mp->m_rbmip; -	/* -	 * Map from the file offset (block) and inode number to the -	 * file system block. -	 */ -	error = xfs_bmapi_single(tp, ip, XFS_DATA_FORK, &fsb, block); -	if (error) { + +	error = xfs_bmapi_read(ip, block, 1, &map, &nmap, XFS_DATA_FORK); +	if (error)  		return error; -	} -	ASSERT(fsb != NULLFSBLOCK); -	/* -	 * Convert to disk address for buffer cache. -	 */ -	d = XFS_FSB_TO_DADDR(mp, fsb); -	/* -	 * Read the buffer. -	 */ -	error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, d, + +	ASSERT(map.br_startblock != NULLFSBLOCK); +	error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, +				   XFS_FSB_TO_DADDR(mp, map.br_startblock),  				   mp->m_bsize, 0, &bp); -	if (error) { +	if (error)  		return error; -	}  	ASSERT(!xfs_buf_geterror(bp));  	*bpp = bp;  	return 0; @@ -1970,7 +1960,7 @@ xfs_growfs_rt(  		 * Lock out other callers by grabbing the bitmap inode lock.  		 */  		xfs_ilock(mp->m_rbmip, XFS_ILOCK_EXCL); -		xfs_trans_ijoin_ref(tp, mp->m_rbmip, XFS_ILOCK_EXCL); +		xfs_trans_ijoin(tp, mp->m_rbmip, XFS_ILOCK_EXCL);  		/*  		 * Update the bitmap inode's size.  		 */ @@ -1982,7 +1972,7 @@ xfs_growfs_rt(  		 * Get the summary inode into the transaction.  		 */  		xfs_ilock(mp->m_rsumip, XFS_ILOCK_EXCL); -		xfs_trans_ijoin_ref(tp, mp->m_rsumip, XFS_ILOCK_EXCL); +		xfs_trans_ijoin(tp, mp->m_rsumip, XFS_ILOCK_EXCL);  		/*  		 * Update the summary inode's size.  		 */ @@ -2153,7 +2143,7 @@ xfs_rtfree_extent(  	 * Synchronize by locking the bitmap inode.  	 */  	xfs_ilock(mp->m_rbmip, XFS_ILOCK_EXCL); -	xfs_trans_ijoin_ref(tp, mp->m_rbmip, XFS_ILOCK_EXCL); +	xfs_trans_ijoin(tp, mp->m_rbmip, XFS_ILOCK_EXCL);  #if defined(__KERNEL__) && defined(DEBUG)  	/* |