aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2010-05-14 09:04:39 -0400
committerEric Van Hensbergen <ericvh@gmail.com>2010-05-22 13:34:11 -0400
commit85e0df240e9376ff58eb1a50d9854f5f176dd297 (patch)
tree253d86bccb5ca9a23863de2caa40b12d3097d624 /fs
parent4681dbdacb5cdc4d3273c3a97a1858d6e00a5fe7 (diff)
fs/9p: Make sure we properly instantiate dentry.
For lookup if we get ENOENT error from the server we still instantiate the dentry. We need to make sure we have dentry operations set in that case so that a later dput on the dentry does the expected. Without the patch we get the below error #ln -sf abc abclink ln: creating symbolic link `abclink': No such file or directory Now on the host do $ touch abclink Guest now gives ENOENT error. # ls ls: cannot access abclink: No such file or directory Debugged-by:Gautham R Shenoy <ego@in.ibm.com> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/9p/vfs_inode.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index de9a39590b70..b44c99979143 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -697,8 +697,8 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
697 if (IS_ERR(fid)) { 697 if (IS_ERR(fid)) {
698 result = PTR_ERR(fid); 698 result = PTR_ERR(fid);
699 if (result == -ENOENT) { 699 if (result == -ENOENT) {
700 d_add(dentry, NULL); 700 inode = NULL;
701 return NULL; 701 goto inst_out;
702 } 702 }
703 703
704 return ERR_PTR(result); 704 return ERR_PTR(result);
@@ -715,7 +715,8 @@ static struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
715 if (result < 0) 715 if (result < 0)
716 goto error; 716 goto error;
717 717
718 if ((fid->qid.version) && (v9ses->cache)) 718inst_out:
719 if (v9ses->cache)
719 dentry->d_op = &v9fs_cached_dentry_operations; 720 dentry->d_op = &v9fs_cached_dentry_operations;
720 else 721 else
721 dentry->d_op = &v9fs_dentry_operations; 722 dentry->d_op = &v9fs_dentry_operations;