diff options
Diffstat (limited to 'fs/9p/vfs_inode_dotl.c')
-rw-r--r-- | fs/9p/vfs_inode_dotl.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index 21523f27f5d1..984594123abe 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c | |||
@@ -159,16 +159,17 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
159 | struct nameidata *nd) | 159 | struct nameidata *nd) |
160 | { | 160 | { |
161 | int err = 0; | 161 | int err = 0; |
162 | char *name = NULL; | ||
163 | gid_t gid; | 162 | gid_t gid; |
164 | int flags; | 163 | int flags; |
165 | mode_t mode; | 164 | mode_t mode; |
166 | struct v9fs_session_info *v9ses; | 165 | char *name = NULL; |
167 | struct p9_fid *fid = NULL; | ||
168 | struct p9_fid *dfid, *ofid, *inode_fid; | ||
169 | struct file *filp; | 166 | struct file *filp; |
170 | struct p9_qid qid; | 167 | struct p9_qid qid; |
171 | struct inode *inode; | 168 | struct inode *inode; |
169 | struct p9_fid *fid = NULL; | ||
170 | struct v9fs_inode *v9inode; | ||
171 | struct p9_fid *dfid, *ofid, *inode_fid; | ||
172 | struct v9fs_session_info *v9ses; | ||
172 | struct posix_acl *pacl = NULL, *dacl = NULL; | 173 | struct posix_acl *pacl = NULL, *dacl = NULL; |
173 | 174 | ||
174 | v9ses = v9fs_inode2v9ses(dir); | 175 | v9ses = v9fs_inode2v9ses(dir); |
@@ -241,9 +242,11 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
241 | 242 | ||
242 | /* Now set the ACL based on the default value */ | 243 | /* Now set the ACL based on the default value */ |
243 | v9fs_set_create_acl(dentry, dacl, pacl); | 244 | v9fs_set_create_acl(dentry, dacl, pacl); |
244 | if (v9ses->cache && !inode->i_private) { | 245 | |
246 | v9inode = V9FS_I(inode); | ||
247 | if (v9ses->cache && !v9inode->writeback_fid) { | ||
245 | /* | 248 | /* |
246 | * clone a fid and add it to inode->i_private | 249 | * clone a fid and add it to writeback_fid |
247 | * we do it during open time instead of | 250 | * we do it during open time instead of |
248 | * page dirty time via write_begin/page_mkwrite | 251 | * page dirty time via write_begin/page_mkwrite |
249 | * because we want write after unlink usecase | 252 | * because we want write after unlink usecase |
@@ -254,7 +257,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode, | |||
254 | err = PTR_ERR(inode_fid); | 257 | err = PTR_ERR(inode_fid); |
255 | goto error; | 258 | goto error; |
256 | } | 259 | } |
257 | inode->i_private = (void *) inode_fid; | 260 | v9inode->writeback_fid = (void *) inode_fid; |
258 | } | 261 | } |
259 | /* Since we are opening a file, assign the open fid to the file */ | 262 | /* Since we are opening a file, assign the open fid to the file */ |
260 | filp = lookup_instantiate_filp(nd, dentry, generic_file_open); | 263 | filp = lookup_instantiate_filp(nd, dentry, generic_file_open); |