aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_vnodeops.c
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@sandeen.net>2007-11-23 00:29:42 -0500
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>2008-02-07 02:16:43 -0500
commit71ddabb94a623d1e16e7e66898bf439ff78ecc41 (patch)
treeded37e51148312db71e6a68b18c8bfca49b95112 /fs/xfs/xfs_vnodeops.c
parenta67d7c5f5d25d0b13a4dfb182697135b014fa478 (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.c12
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);