NFS: Clean up inode metadata updates
Trond Myklebust [Thu, 25 May 2006 05:40:47 +0000 (01:40 -0400)]
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

fs/nfs/inode.c
fs/nfs/nfs4proc.c
include/linux/nfs_xdr.h

index e870e4a..4f12c57 100644 (file)
@@ -1360,12 +1360,6 @@ static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr)
 {
        struct nfs_inode *nfsi = NFS_I(inode);
 
-       if ((fattr->valid & NFS_ATTR_PRE_CHANGE) != 0
-                       && nfsi->change_attr == fattr->pre_change_attr) {
-               nfsi->change_attr = fattr->change_attr;
-               nfsi->cache_change_attribute = jiffies;
-       }
-
        /* If we have atomic WCC data, we may update some attributes */
        if ((fattr->valid & NFS_ATTR_WCC) != 0) {
                if (timespec_equal(&inode->i_ctime, &fattr->pre_ctime)) {
@@ -1399,9 +1393,6 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
        int data_unstable;
 
 
-       if ((fattr->valid & NFS_ATTR_FATTR) == 0)
-               return 0;
-
        /* Has the inode gone and changed behind our back? */
        if (nfsi->fileid != fattr->fileid
                        || (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) {
@@ -1525,9 +1516,6 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
                        __FUNCTION__, inode->i_sb->s_id, inode->i_ino,
                        atomic_read(&inode->i_count), fattr->valid);
 
-       if ((fattr->valid & NFS_ATTR_FATTR) == 0)
-               return 0;
-
        if (nfsi->fileid != fattr->fileid)
                goto out_fileid;
 
index d86c0db..e38a848 100644 (file)
@@ -2008,7 +2008,7 @@ static int _nfs4_proc_link(struct inode *inode, struct inode *dir, struct qstr *
        if (!status) {
                update_changeattr(dir, &res.cinfo);
                nfs_post_op_update_inode(dir, res.dir_attr);
-               nfs_refresh_inode(inode, res.fattr);
+               nfs_post_op_update_inode(inode, res.fattr);
        }
 
        return status;
index 7fafc4c..c483e23 100644 (file)
@@ -57,8 +57,7 @@ struct nfs_fattr {
 #define NFS_ATTR_WCC           0x0001          /* pre-op WCC data    */
 #define NFS_ATTR_FATTR         0x0002          /* post-op attributes */
 #define NFS_ATTR_FATTR_V3      0x0004          /* NFSv3 attributes */
-#define NFS_ATTR_FATTR_V4      0x0008
-#define NFS_ATTR_PRE_CHANGE    0x0010
+#define NFS_ATTR_FATTR_V4      0x0008          /* NFSv4 change attribute */
 
 /*
  * Info on the file system