diff options
author | Eric Sandeen <sandeen@sandeen.net> | 2007-11-23 00:29:42 -0500 |
---|---|---|
committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-02-07 02:16:43 -0500 |
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( | |||
136 | default: | 136 | default: |
137 | vap->va_rdev = 0; | 137 | vap->va_rdev = 0; |
138 | 138 | ||
139 | if (!(ip->i_d.di_flags & XFS_DIFLAG_REALTIME)) { | 139 | if (!(XFS_IS_REALTIME_INODE(ip))) { |
140 | vap->va_blocksize = xfs_preferred_iosize(mp); | 140 | vap->va_blocksize = xfs_preferred_iosize(mp); |
141 | } else { | 141 | } else { |
142 | 142 | ||
@@ -508,7 +508,7 @@ xfs_setattr( | |||
508 | */ | 508 | */ |
509 | if ((ip->i_d.di_nextents || ip->i_delayed_blks) && | 509 | if ((ip->i_d.di_nextents || ip->i_delayed_blks) && |
510 | (mask & XFS_AT_XFLAGS) && | 510 | (mask & XFS_AT_XFLAGS) && |
511 | (ip->i_d.di_flags & XFS_DIFLAG_REALTIME) != | 511 | (XFS_IS_REALTIME_INODE(ip)) != |
512 | (vap->va_xflags & XFS_XFLAG_REALTIME)) { | 512 | (vap->va_xflags & XFS_XFLAG_REALTIME)) { |
513 | code = XFS_ERROR(EINVAL); /* EFBIG? */ | 513 | code = XFS_ERROR(EINVAL); /* EFBIG? */ |
514 | goto error_return; | 514 | goto error_return; |
@@ -520,7 +520,7 @@ xfs_setattr( | |||
520 | if ((mask & XFS_AT_EXTSIZE) && vap->va_extsize != 0) { | 520 | if ((mask & XFS_AT_EXTSIZE) && vap->va_extsize != 0) { |
521 | xfs_extlen_t size; | 521 | xfs_extlen_t size; |
522 | 522 | ||
523 | if ((ip->i_d.di_flags & XFS_DIFLAG_REALTIME) || | 523 | if (XFS_IS_REALTIME_INODE(ip) || |
524 | ((mask & XFS_AT_XFLAGS) && | 524 | ((mask & XFS_AT_XFLAGS) && |
525 | (vap->va_xflags & XFS_XFLAG_REALTIME))) { | 525 | (vap->va_xflags & XFS_XFLAG_REALTIME))) { |
526 | size = mp->m_sb.sb_rextsize << | 526 | size = mp->m_sb.sb_rextsize << |
@@ -1144,7 +1144,7 @@ xfs_fsync( | |||
1144 | * If this inode is on the RT dev we need to flush that | 1144 | * If this inode is on the RT dev we need to flush that |
1145 | * cache as well. | 1145 | * cache as well. |
1146 | */ | 1146 | */ |
1147 | if (ip->i_d.di_flags & XFS_DIFLAG_REALTIME) | 1147 | if (XFS_IS_REALTIME_INODE(ip)) |
1148 | xfs_blkdev_issue_flush(ip->i_mount->m_rtdev_targp); | 1148 | xfs_blkdev_issue_flush(ip->i_mount->m_rtdev_targp); |
1149 | } | 1149 | } |
1150 | 1150 | ||
@@ -4044,7 +4044,7 @@ xfs_zero_remaining_bytes( | |||
4044 | int error = 0; | 4044 | int error = 0; |
4045 | 4045 | ||
4046 | bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize, | 4046 | bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize, |
4047 | ip->i_d.di_flags & XFS_DIFLAG_REALTIME ? | 4047 | XFS_IS_REALTIME_INODE(ip) ? |
4048 | mp->m_rtdev_targp : mp->m_ddev_targp); | 4048 | mp->m_rtdev_targp : mp->m_ddev_targp); |
4049 | 4049 | ||
4050 | for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { | 4050 | for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { |
@@ -4141,7 +4141,7 @@ xfs_free_file_space( | |||
4141 | error = 0; | 4141 | error = 0; |
4142 | if (len <= 0) /* if nothing being freed */ | 4142 | if (len <= 0) /* if nothing being freed */ |
4143 | return error; | 4143 | return error; |
4144 | rt = (ip->i_d.di_flags & XFS_DIFLAG_REALTIME); | 4144 | rt = XFS_IS_REALTIME_INODE(ip); |
4145 | startoffset_fsb = XFS_B_TO_FSB(mp, offset); | 4145 | startoffset_fsb = XFS_B_TO_FSB(mp, offset); |
4146 | end_dmi_offset = offset + len; | 4146 | end_dmi_offset = offset + len; |
4147 | endoffset_fsb = XFS_B_TO_FSBT(mp, end_dmi_offset); | 4147 | endoffset_fsb = XFS_B_TO_FSBT(mp, end_dmi_offset); |