diff options
| author | Eric Sandeen <sandeen@sandeen.net> | 2007-11-23 16:29:42 +1100 | 
|---|---|---|
| committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-02-07 18:16:43 +1100 | 
| commit | 71ddabb94a623d1e16e7e66898bf439ff78ecc41 (patch) | |
| tree | ded37e51148312db71e6a68b18c8bfca49b95112 /fs/xfs/xfs_vnodeops.c | |
| parent | a67d7c5f5d25d0b13a4dfb182697135b014fa478 (diff) | |
[XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config
Use XFS_IS_REALTIME_INODE in more places, and #define it to 0 if
CONFIG_XFS_RT is off. This should be safe because mount checks in
xfs_rtmount_init:
so if we get mounted w/o CONFIG_XFS_RT, no realtime inodes should be
encountered after that.
Defining XFS_IS_REALTIME_INODE to 0 saves a bit of stack space,
presumeably gcc can optimize around the various "if (0)" type checks:
xfs_alloc_file_space -8 xfs_bmap_adjacent -16 xfs_bmapi -8
xfs_bmap_rtalloc -16 xfs_bunmapi -28 xfs_free_file_space -64 xfs_imap +8
<-- ? hmm. xfs_iomap_write_direct -12 xfs_qm_dqusage_adjust -4
xfs_qm_vop_chown_reserve -4
SGI-PV: 971186
SGI-Modid: xfs-linux-melb:xfs-kern:30014a
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_vnodeops.c')
| -rw-r--r-- | fs/xfs/xfs_vnodeops.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index d964e21521ab..5322d9fb5321 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -136,7 +136,7 @@ xfs_getattr(  	default:  		vap->va_rdev = 0; -		if (!(ip->i_d.di_flags & XFS_DIFLAG_REALTIME)) { +		if (!(XFS_IS_REALTIME_INODE(ip))) {  			vap->va_blocksize = xfs_preferred_iosize(mp);  		} else { @@ -508,7 +508,7 @@ xfs_setattr(  		 */  		if ((ip->i_d.di_nextents || ip->i_delayed_blks) &&  		    (mask & XFS_AT_XFLAGS) && -		    (ip->i_d.di_flags & XFS_DIFLAG_REALTIME) != +		    (XFS_IS_REALTIME_INODE(ip)) !=  		    (vap->va_xflags & XFS_XFLAG_REALTIME)) {  			code = XFS_ERROR(EINVAL);	/* EFBIG? */  			goto error_return; @@ -520,7 +520,7 @@ xfs_setattr(  		if ((mask & XFS_AT_EXTSIZE) && vap->va_extsize != 0) {  			xfs_extlen_t	size; -			if ((ip->i_d.di_flags & XFS_DIFLAG_REALTIME) || +			if (XFS_IS_REALTIME_INODE(ip) ||  			    ((mask & XFS_AT_XFLAGS) &&  			    (vap->va_xflags & XFS_XFLAG_REALTIME))) {  				size = mp->m_sb.sb_rextsize << @@ -1144,7 +1144,7 @@ xfs_fsync(  		 * If this inode is on the RT dev we need to flush that  		 * cache as well.  		 */ -		if (ip->i_d.di_flags & XFS_DIFLAG_REALTIME) +		if (XFS_IS_REALTIME_INODE(ip))  			xfs_blkdev_issue_flush(ip->i_mount->m_rtdev_targp);  	} @@ -4044,7 +4044,7 @@ xfs_zero_remaining_bytes(  	int			error = 0;  	bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize, -				ip->i_d.di_flags & XFS_DIFLAG_REALTIME ? +				XFS_IS_REALTIME_INODE(ip) ?  				mp->m_rtdev_targp : mp->m_ddev_targp);  	for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { @@ -4141,7 +4141,7 @@ xfs_free_file_space(  	error = 0;  	if (len <= 0)	/* if nothing being freed */  		return error; -	rt = (ip->i_d.di_flags & XFS_DIFLAG_REALTIME); +	rt = XFS_IS_REALTIME_INODE(ip);  	startoffset_fsb	= XFS_B_TO_FSB(mp, offset);  	end_dmi_offset = offset + len;  	endoffset_fsb = XFS_B_TO_FSBT(mp, end_dmi_offset); | 
