Commit 81c76880 authored by Trond Myklebust's avatar Trond Myklebust

NFSv3: Always use directory post-op attributes in nfs3_proc_lookup

LOOKUP returns the directory post-op attributes whether or not the
operation was successful.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent d75340cc
...@@ -166,6 +166,7 @@ nfs3_proc_lookup(struct inode *dir, struct qstr *name, ...@@ -166,6 +166,7 @@ nfs3_proc_lookup(struct inode *dir, struct qstr *name,
nfs_fattr_init(&dir_attr); nfs_fattr_init(&dir_attr);
nfs_fattr_init(fattr); nfs_fattr_init(fattr);
status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0); status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
nfs_refresh_inode(dir, &dir_attr);
if (status >= 0 && !(fattr->valid & NFS_ATTR_FATTR)) { if (status >= 0 && !(fattr->valid & NFS_ATTR_FATTR)) {
msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR]; msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR];
msg.rpc_argp = fhandle; msg.rpc_argp = fhandle;
...@@ -173,8 +174,6 @@ nfs3_proc_lookup(struct inode *dir, struct qstr *name, ...@@ -173,8 +174,6 @@ nfs3_proc_lookup(struct inode *dir, struct qstr *name,
status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0); status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
} }
dprintk("NFS reply lookup: %d\n", status); dprintk("NFS reply lookup: %d\n", status);
if (status >= 0)
status = nfs_refresh_inode(dir, &dir_attr);
return status; return status;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment