[XFS] stop updating inode->i_blocks
authorChristoph Hellwig <hch@infradead.org>
Tue, 5 Feb 2008 01:13:46 +0000 (12:13 +1100)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Thu, 7 Feb 2008 07:23:15 +0000 (18:23 +1100)
The VFS doesn't use i_blocks, it's only used by generic_fillattr and the
generic quota code which XFS doesn't use. In XFS there is one use to check
whether we have an inline or out of line sumlink, but we can replace that
with a check of the XFS_IFINLINE inode flag.

SGI-PV: 971186
SGI-Modid: xfs-linux-melb:xfs-kern:30391a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
fs/xfs/linux-2.6/xfs_iops.c
fs/xfs/linux-2.6/xfs_super.c
fs/xfs/linux-2.6/xfs_vnode.c
fs/xfs/xfs_vnodeops.c

index c3231a5193618e53b4bacad4392780b67d28e62c..5e16016bf65710ce6cf4348f64dafda2effb8775 100644 (file)
@@ -202,9 +202,6 @@ xfs_validate_fields(
        loff_t size;
 
        inode->i_nlink = ip->i_d.di_nlink;
-       inode->i_blocks =
-               XFS_FSB_TO_BB(ip->i_mount, ip->i_d.di_nblocks +
-                                          ip->i_delayed_blks);
        /* we're under i_sem so i_size can't change under us */
        size = XFS_ISIZE(ip);
        if (i_size_read(inode) != size)
index 156a1a7da16bc9cf9ddc7dc75ee12e30a7172b37..49d1d0ee6c231c5b4ed2c82635e450984542cf46 100644 (file)
@@ -569,7 +569,7 @@ xfs_set_inodeops(
                break;
        case S_IFLNK:
                inode->i_op = &xfs_symlink_inode_operations;
-               if (inode->i_blocks)
+               if (!(XFS_I(inode)->i_df.if_flags & XFS_IFINLINE))
                        inode->i_mapping->a_ops = &xfs_address_space_operations;
                break;
        default:
@@ -606,8 +606,6 @@ xfs_revalidate_inode(
 
        inode->i_generation = ip->i_d.di_gen;
        i_size_write(inode, ip->i_d.di_size);
-       inode->i_blocks =
-               XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks);
        inode->i_atime.tv_sec   = ip->i_d.di_atime.t_sec;
        inode->i_atime.tv_nsec  = ip->i_d.di_atime.t_nsec;
        inode->i_mtime.tv_sec   = ip->i_d.di_mtime.t_sec;
index 8f0f74fc703a80f72c4506299831f2079a41e655..9bf36dc48a6e15e5c20f9ed4c1ca51bc8d9cdd42 100644 (file)
@@ -106,8 +106,6 @@ vn_revalidate(
        inode->i_nlink      = ip->i_d.di_nlink;
        inode->i_uid        = ip->i_d.di_uid;
        inode->i_gid        = ip->i_d.di_gid;
-       inode->i_blocks     =
-               XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks);
        inode->i_mtime.tv_sec = ip->i_d.di_mtime.t_sec;
        inode->i_mtime.tv_nsec = ip->i_d.di_mtime.t_nsec;
        inode->i_ctime.tv_sec = ip->i_d.di_ctime.t_sec;
index 27e1bea8169f216b187fc3ab85da5e96efb69b77..51305242ff8cb8b8793e4d19412adfdc309aa555 100644 (file)
@@ -1536,9 +1536,6 @@ xfs_release(
                        error = xfs_free_eofblocks(mp, ip, XFS_FREE_EOF_LOCK);
                        if (error)
                                return error;
-                       /* Update linux inode block count after free above */
-                       vn_to_inode(vp)->i_blocks = XFS_FSB_TO_BB(mp,
-                               ip->i_d.di_nblocks + ip->i_delayed_blks);
                }
        }
 
@@ -1612,9 +1609,6 @@ xfs_inactive(
                        error = xfs_free_eofblocks(mp, ip, XFS_FREE_EOF_LOCK);
                        if (error)
                                return VN_INACTIVE_CACHE;
-                       /* Update linux inode block count after free above */
-                       vn_to_inode(vp)->i_blocks = XFS_FSB_TO_BB(mp,
-                               ip->i_d.di_nblocks + ip->i_delayed_blks);
                }
                goto out;
        }