NFS: Clean up inode metadata updates
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 25 May 2006 05:40:47 +0000 (01:40 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 9 Jun 2006 13:34:04 +0000 (09:34 -0400)
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/inode.c
fs/nfs/nfs4proc.c
include/linux/nfs_xdr.h

index e870e4aae714946dfc29c66e7ac3f889ce70949c..4f12c57456f408ab387a6fb4aab0d067387b948e 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 d86c0db7b1e82a03bd003bc54aca52385e2c1bb7..e38a84874492b7e32a3bc8b71334dcbb049c28de 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 7fafc4c546b7fb735a8d0ce6725fbe07d31df049..c483e239f99340ac7905cc4d676a929be17e66c5 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