aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_file.c
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2011-02-28 06:33:57 -0500
committerEric Van Hensbergen <ericvh@gmail.com>2011-03-15 10:57:37 -0400
commit3cf387d780944305839f5b27c51f225444ba4d27 (patch)
treeed4ef1d723ed3c7c280aadfcf397218004e49252 /fs/9p/vfs_file.c
parent17311779ac3dcd06f8ef727a06969c439e116a20 (diff)
fs/9p: Add fid to inode in cached mode
The fid attached to inode will be opened O_RDWR mode and is used for dirty page writeback only. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs/9p/vfs_file.c')
-rw-r--r--fs/9p/vfs_file.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index 6e1e8f43edac..e966f15f92ec 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -86,11 +86,30 @@ int v9fs_file_open(struct inode *inode, struct file *file)
86 } 86 }
87 87
88 file->private_data = fid; 88 file->private_data = fid;
89 if (v9ses->cache && !inode->i_private) {
90 /*
91 * clone a fid and add it to inode->i_private
92 * we do it during open time instead of
93 * page dirty time via write_begin/page_mkwrite
94 * because we want write after unlink usecase
95 * to work.
96 */
97 fid = v9fs_writeback_fid(file->f_path.dentry);
98 if (IS_ERR(fid)) {
99 err = PTR_ERR(fid);
100 goto out_error;
101 }
102 inode->i_private = (void *) fid;
103 }
89#ifdef CONFIG_9P_FSCACHE 104#ifdef CONFIG_9P_FSCACHE
90 if (v9ses->cache) 105 if (v9ses->cache)
91 v9fs_cache_inode_set_cookie(inode, file); 106 v9fs_cache_inode_set_cookie(inode, file);
92#endif 107#endif
93 return 0; 108 return 0;
109out_error:
110 p9_client_clunk(file->private_data);
111 file->private_data = NULL;
112 return err;
94} 113}
95 114
96/** 115/**