mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	xfs: simplify xfs_buf_get / xfs_buf_read interfaces
Currently the low-level buffer cache interfaces are highly confusing as we have a _flags variant of each that does actually respect the flags, and one without _flags which has a flags argument that gets ignored and overriden with a default set. Given that very few places use the default arguments get rid of the duplication and convert all callers to pass the flags explicitly. Also remove the now confusing _flags postfix. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <david@fromorbit.com> Signed-off-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
		
							parent
							
								
									c355c656fe
								
							
						
					
					
						commit
						6ad112bfb5
					
				
					 9 changed files with 44 additions and 50 deletions
				
			
		|  | @ -582,7 +582,7 @@ found: | |||
|  *	although backing storage may not be. | ||||
|  */ | ||||
| xfs_buf_t * | ||||
| xfs_buf_get_flags( | ||||
| xfs_buf_get( | ||||
| 	xfs_buftarg_t		*target,/* target for buffer		*/ | ||||
| 	xfs_off_t		ioff,	/* starting offset of range	*/ | ||||
| 	size_t			isize,	/* length of range		*/ | ||||
|  | @ -661,7 +661,7 @@ _xfs_buf_read( | |||
| } | ||||
| 
 | ||||
| xfs_buf_t * | ||||
| xfs_buf_read_flags( | ||||
| xfs_buf_read( | ||||
| 	xfs_buftarg_t		*target, | ||||
| 	xfs_off_t		ioff, | ||||
| 	size_t			isize, | ||||
|  | @ -671,7 +671,7 @@ xfs_buf_read_flags( | |||
| 
 | ||||
| 	flags |= XBF_READ; | ||||
| 
 | ||||
| 	bp = xfs_buf_get_flags(target, ioff, isize, flags); | ||||
| 	bp = xfs_buf_get(target, ioff, isize, flags); | ||||
| 	if (bp) { | ||||
| 		if (!XFS_BUF_ISDONE(bp)) { | ||||
| 			XB_TRACE(bp, "read", (unsigned long)flags); | ||||
|  | @ -718,7 +718,7 @@ xfs_buf_readahead( | |||
| 		return; | ||||
| 
 | ||||
| 	flags |= (XBF_TRYLOCK|XBF_ASYNC|XBF_READ_AHEAD); | ||||
| 	xfs_buf_read_flags(target, ioff, isize, flags); | ||||
| 	xfs_buf_read(target, ioff, isize, flags); | ||||
| } | ||||
| 
 | ||||
| xfs_buf_t * | ||||
|  |  | |||
|  | @ -186,15 +186,10 @@ extern xfs_buf_t *_xfs_buf_find(xfs_buftarg_t *, xfs_off_t, size_t, | |||
| #define xfs_incore(buftarg,blkno,len,lockit) \ | ||||
| 	_xfs_buf_find(buftarg, blkno ,len, lockit, NULL) | ||||
| 
 | ||||
| extern xfs_buf_t *xfs_buf_get_flags(xfs_buftarg_t *, xfs_off_t, size_t, | ||||
| extern xfs_buf_t *xfs_buf_get(xfs_buftarg_t *, xfs_off_t, size_t, | ||||
| 				xfs_buf_flags_t); | ||||
| #define xfs_buf_get(target, blkno, len, flags) \ | ||||
| 	xfs_buf_get_flags((target), (blkno), (len), XBF_LOCK | XBF_MAPPED) | ||||
| 
 | ||||
| extern xfs_buf_t *xfs_buf_read_flags(xfs_buftarg_t *, xfs_off_t, size_t, | ||||
| extern xfs_buf_t *xfs_buf_read(xfs_buftarg_t *, xfs_off_t, size_t, | ||||
| 				xfs_buf_flags_t); | ||||
| #define xfs_buf_read(target, blkno, len, flags) \ | ||||
| 	xfs_buf_read_flags((target), (blkno), (len), XBF_LOCK | XBF_MAPPED) | ||||
| 
 | ||||
| extern xfs_buf_t *xfs_buf_get_empty(size_t, xfs_buftarg_t *); | ||||
| extern xfs_buf_t *xfs_buf_get_noaddr(size_t, xfs_buftarg_t *); | ||||
|  |  | |||
|  | @ -2143,8 +2143,8 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) | |||
| 		dblkno = XFS_FSB_TO_DADDR(mp, map.br_startblock), | ||||
| 		blkcnt = XFS_FSB_TO_BB(mp, map.br_blockcount); | ||||
| 
 | ||||
| 		bp = xfs_buf_get_flags(mp->m_ddev_targp, dblkno, blkcnt, | ||||
| 				       XFS_BUF_LOCK | XBF_DONT_BLOCK); | ||||
| 		bp = xfs_buf_get(mp->m_ddev_targp, dblkno, blkcnt, | ||||
| 				 XFS_BUF_LOCK | XBF_DONT_BLOCK); | ||||
| 		ASSERT(bp); | ||||
| 		ASSERT(!XFS_BUF_GETERROR(bp)); | ||||
| 
 | ||||
|  |  | |||
|  | @ -201,8 +201,8 @@ xfs_growfs_data_private( | |||
| 		 * AG freelist header block | ||||
| 		 */ | ||||
| 		bp = xfs_buf_get(mp->m_ddev_targp, | ||||
| 				  XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), | ||||
| 				  XFS_FSS_TO_BB(mp, 1), 0); | ||||
| 				 XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), | ||||
| 				 XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED); | ||||
| 		agf = XFS_BUF_TO_AGF(bp); | ||||
| 		memset(agf, 0, mp->m_sb.sb_sectsize); | ||||
| 		agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC); | ||||
|  | @ -233,8 +233,8 @@ xfs_growfs_data_private( | |||
| 		 * AG inode header block | ||||
| 		 */ | ||||
| 		bp = xfs_buf_get(mp->m_ddev_targp, | ||||
| 				  XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), | ||||
| 				  XFS_FSS_TO_BB(mp, 1), 0); | ||||
| 				 XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), | ||||
| 				 XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED); | ||||
| 		agi = XFS_BUF_TO_AGI(bp); | ||||
| 		memset(agi, 0, mp->m_sb.sb_sectsize); | ||||
| 		agi->agi_magicnum = cpu_to_be32(XFS_AGI_MAGIC); | ||||
|  | @ -257,8 +257,9 @@ xfs_growfs_data_private( | |||
| 		 * BNO btree root block | ||||
| 		 */ | ||||
| 		bp = xfs_buf_get(mp->m_ddev_targp, | ||||
| 			XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), | ||||
| 			BTOBB(mp->m_sb.sb_blocksize), 0); | ||||
| 				 XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), | ||||
| 				 BTOBB(mp->m_sb.sb_blocksize), | ||||
| 				 XBF_LOCK | XBF_MAPPED); | ||||
| 		block = XFS_BUF_TO_BLOCK(bp); | ||||
| 		memset(block, 0, mp->m_sb.sb_blocksize); | ||||
| 		block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC); | ||||
|  | @ -278,8 +279,9 @@ xfs_growfs_data_private( | |||
| 		 * CNT btree root block | ||||
| 		 */ | ||||
| 		bp = xfs_buf_get(mp->m_ddev_targp, | ||||
| 			XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), | ||||
| 			BTOBB(mp->m_sb.sb_blocksize), 0); | ||||
| 				 XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), | ||||
| 				 BTOBB(mp->m_sb.sb_blocksize), | ||||
| 				 XBF_LOCK | XBF_MAPPED); | ||||
| 		block = XFS_BUF_TO_BLOCK(bp); | ||||
| 		memset(block, 0, mp->m_sb.sb_blocksize); | ||||
| 		block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC); | ||||
|  | @ -300,8 +302,9 @@ xfs_growfs_data_private( | |||
| 		 * INO btree root block | ||||
| 		 */ | ||||
| 		bp = xfs_buf_get(mp->m_ddev_targp, | ||||
| 			XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), | ||||
| 			BTOBB(mp->m_sb.sb_blocksize), 0); | ||||
| 				 XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), | ||||
| 				 BTOBB(mp->m_sb.sb_blocksize), | ||||
| 				 XBF_LOCK | XBF_MAPPED); | ||||
| 		block = XFS_BUF_TO_BLOCK(bp); | ||||
| 		memset(block, 0, mp->m_sb.sb_blocksize); | ||||
| 		block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC); | ||||
|  |  | |||
|  | @ -2206,6 +2206,7 @@ xlog_recover_do_buffer_trans( | |||
| 	xfs_daddr_t		blkno; | ||||
| 	int			len; | ||||
| 	ushort			flags; | ||||
| 	uint			buf_flags; | ||||
| 
 | ||||
| 	buf_f = (xfs_buf_log_format_t *)item->ri_buf[0].i_addr; | ||||
| 
 | ||||
|  | @ -2246,12 +2247,11 @@ xlog_recover_do_buffer_trans( | |||
| 	} | ||||
| 
 | ||||
| 	mp = log->l_mp; | ||||
| 	if (flags & XFS_BLI_INODE_BUF) { | ||||
| 		bp = xfs_buf_read_flags(mp->m_ddev_targp, blkno, len, | ||||
| 								XFS_BUF_LOCK); | ||||
| 	} else { | ||||
| 		bp = xfs_buf_read(mp->m_ddev_targp, blkno, len, 0); | ||||
| 	} | ||||
| 	buf_flags = XFS_BUF_LOCK; | ||||
| 	if (!(flags & XFS_BLI_INODE_BUF)) | ||||
| 		buf_flags |= XFS_BUF_MAPPED; | ||||
| 
 | ||||
| 	bp = xfs_buf_read(mp->m_ddev_targp, blkno, len, buf_flags); | ||||
| 	if (XFS_BUF_ISERROR(bp)) { | ||||
| 		xfs_ioerror_alert("xlog_recover_do..(read#1)", log->l_mp, | ||||
| 				  bp, blkno); | ||||
|  | @ -2350,8 +2350,8 @@ xlog_recover_do_inode_trans( | |||
| 		goto error; | ||||
| 	} | ||||
| 
 | ||||
| 	bp = xfs_buf_read_flags(mp->m_ddev_targp, in_f->ilf_blkno, | ||||
| 				in_f->ilf_len, XFS_BUF_LOCK); | ||||
| 	bp = xfs_buf_read(mp->m_ddev_targp, in_f->ilf_blkno, in_f->ilf_len, | ||||
| 			  XFS_BUF_LOCK); | ||||
| 	if (XFS_BUF_ISERROR(bp)) { | ||||
| 		xfs_ioerror_alert("xlog_recover_do..(read#2)", mp, | ||||
| 				  bp, in_f->ilf_blkno); | ||||
|  |  | |||
|  | @ -583,8 +583,8 @@ xfs_readsb(xfs_mount_t *mp, int flags) | |||
| 	sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); | ||||
| 	extra_flags = XFS_BUF_LOCK | XFS_BUF_MANAGE | XFS_BUF_MAPPED; | ||||
| 
 | ||||
| 	bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, | ||||
| 				BTOBB(sector_size), extra_flags); | ||||
| 	bp = xfs_buf_read(mp->m_ddev_targp, XFS_SB_DADDR, BTOBB(sector_size), | ||||
| 			  extra_flags); | ||||
| 	if (!bp || XFS_BUF_ISERROR(bp)) { | ||||
| 		xfs_fs_mount_cmn_err(flags, "SB read failed"); | ||||
| 		error = bp ? XFS_BUF_GETERROR(bp) : ENOMEM; | ||||
|  | @ -624,8 +624,8 @@ xfs_readsb(xfs_mount_t *mp, int flags) | |||
| 		XFS_BUF_UNMANAGE(bp); | ||||
| 		xfs_buf_relse(bp); | ||||
| 		sector_size = mp->m_sb.sb_sectsize; | ||||
| 		bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, | ||||
| 					BTOBB(sector_size), extra_flags); | ||||
| 		bp = xfs_buf_read(mp->m_ddev_targp, XFS_SB_DADDR, | ||||
| 				  BTOBB(sector_size), extra_flags); | ||||
| 		if (!bp || XFS_BUF_ISERROR(bp)) { | ||||
| 			xfs_fs_mount_cmn_err(flags, "SB re-read failed"); | ||||
| 			error = bp ? XFS_BUF_GETERROR(bp) : ENOMEM; | ||||
|  |  | |||
|  | @ -277,10 +277,10 @@ xfs_read_buf( | |||
| 	xfs_buf_t	 *bp; | ||||
| 	int		 error; | ||||
| 
 | ||||
| 	if (flags) | ||||
| 		bp = xfs_buf_read_flags(target, blkno, len, flags); | ||||
| 	else | ||||
| 		bp = xfs_buf_read(target, blkno, len, flags); | ||||
| 	if (!flags) | ||||
| 		flags = XBF_LOCK | XBF_MAPPED; | ||||
| 
 | ||||
| 	bp = xfs_buf_read(target, blkno, len, flags); | ||||
| 	if (!bp) | ||||
| 		return XFS_ERROR(EIO); | ||||
| 	error = XFS_BUF_GETERROR(bp); | ||||
|  |  | |||
|  | @ -79,11 +79,8 @@ xfs_trans_get_buf(xfs_trans_t	*tp, | |||
| 	/*
 | ||||
| 	 * Default to a normal get_buf() call if the tp is NULL. | ||||
| 	 */ | ||||
| 	if (tp == NULL) { | ||||
| 		bp = xfs_buf_get_flags(target_dev, blkno, len, | ||||
| 							flags | BUF_BUSY); | ||||
| 		return(bp); | ||||
| 	} | ||||
| 	if (tp == NULL) | ||||
| 		return xfs_buf_get(target_dev, blkno, len, flags | BUF_BUSY); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * If we find the buffer in the cache with this transaction | ||||
|  | @ -129,7 +126,7 @@ xfs_trans_get_buf(xfs_trans_t	*tp, | |||
| 	 * easily deadlock with our current transaction as well as cause | ||||
| 	 * us to run out of stack space. | ||||
| 	 */ | ||||
| 	bp = xfs_buf_get_flags(target_dev, blkno, len, flags | BUF_BUSY); | ||||
| 	bp = xfs_buf_get(target_dev, blkno, len, flags | BUF_BUSY); | ||||
| 	if (bp == NULL) { | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | @ -302,7 +299,7 @@ xfs_trans_read_buf( | |||
| 	 * Default to a normal get_buf() call if the tp is NULL. | ||||
| 	 */ | ||||
| 	if (tp == NULL) { | ||||
| 		bp = xfs_buf_read_flags(target, blkno, len, flags | BUF_BUSY); | ||||
| 		bp = xfs_buf_read(target, blkno, len, flags | BUF_BUSY); | ||||
| 		if (!bp) | ||||
| 			return (flags & XFS_BUF_TRYLOCK) ? | ||||
| 					EAGAIN : XFS_ERROR(ENOMEM); | ||||
|  | @ -398,7 +395,7 @@ xfs_trans_read_buf( | |||
| 	 * easily deadlock with our current transaction as well as cause | ||||
| 	 * us to run out of stack space. | ||||
| 	 */ | ||||
| 	bp = xfs_buf_read_flags(target, blkno, len, flags | BUF_BUSY); | ||||
| 	bp = xfs_buf_read(target, blkno, len, flags | BUF_BUSY); | ||||
| 	if (bp == NULL) { | ||||
| 		*bpp = NULL; | ||||
| 		return 0; | ||||
|  |  | |||
|  | @ -538,9 +538,8 @@ xfs_readlink_bmap( | |||
| 		d = XFS_FSB_TO_DADDR(mp, mval[n].br_startblock); | ||||
| 		byte_cnt = XFS_FSB_TO_B(mp, mval[n].br_blockcount); | ||||
| 
 | ||||
| 		bp = xfs_buf_read_flags(mp->m_ddev_targp, d, BTOBB(byte_cnt), | ||||
| 					XBF_LOCK | XBF_MAPPED | | ||||
| 					XBF_DONT_BLOCK); | ||||
| 		bp = xfs_buf_read(mp->m_ddev_targp, d, BTOBB(byte_cnt), | ||||
| 				  XBF_LOCK | XBF_MAPPED | XBF_DONT_BLOCK); | ||||
| 		error = XFS_BUF_GETERROR(bp); | ||||
| 		if (error) { | ||||
| 			xfs_ioerror_alert("xfs_readlink", | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christoph Hellwig
						Christoph Hellwig