xfs
[Top] [All Lists]

Re: [PATCH 1/2] stop updating inode->i_blocks

To: Christoph Hellwig <hch@xxxxxx>
Subject: Re: [PATCH 1/2] stop updating inode->i_blocks
From: Vlad Apostolov <vapo@xxxxxxx>
Date: Mon, 17 Dec 2007 11:41:14 +1100
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20071216163352.GB2107@xxxxxx>
References: <20071216163352.GB2107@xxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Thunderbird 2.0.0.9 (X11/20071031)
It is looking good from DMAPI point of view.

Regards,
Vlad

Christoph Hellwig wrote:
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.


Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: linux-2.6-xfs/fs/xfs/dmapi/xfs_dm.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/dmapi/xfs_dm.c    2007-11-30 10:14:10.000000000 
+0100
+++ linux-2.6-xfs/fs/xfs/dmapi/xfs_dm.c 2007-11-30 10:18:38.000000000 +0100
@@ -2503,11 +2503,6 @@ xfs_dm_punch_hole(
         */
        if (!error && (len == 0)) {
                error = xfs_free_eofblocks(mp, ip, XFS_FREE_EOF_NOLOCK);
-               if (!error) {
-                       /* Update linux inode block count after free above */
-                       inode->i_blocks = XFS_FSB_TO_BB(mp,
-                               ip->i_d.di_nblocks + ip->i_delayed_blks);
-               }
        }
/*
Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_iops.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_iops.c      2007-11-30 
10:15:48.000000000 +0100
+++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_iops.c   2007-11-30 10:18:38.000000000 
+0100
@@ -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: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_super.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_super.c     2007-11-30 
10:15:48.000000000 +0100
+++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_super.c  2007-11-30 10:18:38.000000000 
+0100
@@ -568,7 +568,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:
@@ -605,8 +605,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: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_vnode.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_vnode.c     2007-11-30 
10:14:10.000000000 +0100
+++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_vnode.c  2007-11-30 10:18:38.000000000 
+0100
@@ -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: linux-2.6-xfs/fs/xfs/xfs_vnodeops.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_vnodeops.c    2007-11-30 10:14:10.000000000 
+0100
+++ linux-2.6-xfs/fs/xfs/xfs_vnodeops.c 2007-11-30 10:18:38.000000000 +0100
@@ -1557,9 +1557,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);
                }
        }
@@ -1633,9 +1630,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;
        }



<Prev in Thread] Current Thread [Next in Thread>