]> err.no Git - linux-2.6/blobdiff - fs/nfs/nfs3proc.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/net-2.6
[linux-2.6] / fs / nfs / nfs3proc.c
index fc6b1193a6311a32a6889daa95dd11e7d618af26..4cdc2361a669bed2347d599f027cc10e57c9d7dc 100644 (file)
@@ -166,6 +166,7 @@ nfs3_proc_lookup(struct inode *dir, struct qstr *name,
        nfs_fattr_init(&dir_attr);
        nfs_fattr_init(fattr);
        status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
+       nfs_refresh_inode(dir, &dir_attr);
        if (status >= 0 && !(fattr->valid & NFS_ATTR_FATTR)) {
                msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR];
                msg.rpc_argp = fhandle;
@@ -173,8 +174,6 @@ nfs3_proc_lookup(struct inode *dir, struct qstr *name,
                status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
        }
        dprintk("NFS reply lookup: %d\n", status);
-       if (status >= 0)
-               status = nfs_refresh_inode(dir, &dir_attr);
        return status;
 }
 
@@ -750,7 +749,7 @@ static int nfs3_write_done(struct rpc_task *task, struct nfs_write_data *data)
        if (nfs3_async_handle_jukebox(task, data->inode))
                return -EAGAIN;
        if (task->tk_status >= 0)
-               nfs_post_op_update_inode(data->inode, data->res.fattr);
+               nfs_post_op_update_inode_force_wcc(data->inode, data->res.fattr);
        return 0;
 }
 
@@ -778,8 +777,7 @@ static int nfs3_commit_done(struct rpc_task *task, struct nfs_write_data *data)
 {
        if (nfs3_async_handle_jukebox(task, data->inode))
                return -EAGAIN;
-       if (task->tk_status >= 0)
-               nfs_post_op_update_inode(data->inode, data->res.fattr);
+       nfs_refresh_inode(data->inode, data->res.fattr);
        return 0;
 }