aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_inode_dotl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/9p/vfs_inode_dotl.c')
-rw-r--r--fs/9p/vfs_inode_dotl.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index 4c10edec26a0..59dc8e87647f 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -330,7 +330,8 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
330 330
331 v9inode = V9FS_I(inode); 331 v9inode = V9FS_I(inode);
332 mutex_lock(&v9inode->v_mutex); 332 mutex_lock(&v9inode->v_mutex);
333 if (v9ses->cache && !v9inode->writeback_fid && 333 if ((v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) &&
334 !v9inode->writeback_fid &&
334 ((flags & O_ACCMODE) != O_RDONLY)) { 335 ((flags & O_ACCMODE) != O_RDONLY)) {
335 /* 336 /*
336 * clone a fid and add it to writeback_fid 337 * clone a fid and add it to writeback_fid
@@ -353,7 +354,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
353 if (err) 354 if (err)
354 goto err_clunk_old_fid; 355 goto err_clunk_old_fid;
355 file->private_data = ofid; 356 file->private_data = ofid;
356 if (v9ses->cache) 357 if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE)
357 v9fs_cache_inode_set_cookie(inode, file); 358 v9fs_cache_inode_set_cookie(inode, file);
358 *opened |= FILE_CREATED; 359 *opened |= FILE_CREATED;
359out: 360out:
@@ -473,13 +474,11 @@ static int
473v9fs_vfs_getattr_dotl(struct vfsmount *mnt, struct dentry *dentry, 474v9fs_vfs_getattr_dotl(struct vfsmount *mnt, struct dentry *dentry,
474 struct kstat *stat) 475 struct kstat *stat)
475{ 476{
476 int err;
477 struct v9fs_session_info *v9ses; 477 struct v9fs_session_info *v9ses;
478 struct p9_fid *fid; 478 struct p9_fid *fid;
479 struct p9_stat_dotl *st; 479 struct p9_stat_dotl *st;
480 480
481 p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry); 481 p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry);
482 err = -EPERM;
483 v9ses = v9fs_dentry2v9ses(dentry); 482 v9ses = v9fs_dentry2v9ses(dentry);
484 if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) { 483 if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) {
485 generic_fillattr(dentry->d_inode, stat); 484 generic_fillattr(dentry->d_inode, stat);
@@ -556,7 +555,6 @@ static int v9fs_mapped_iattr_valid(int iattr_valid)
556int v9fs_vfs_setattr_dotl(struct dentry *dentry, struct iattr *iattr) 555int v9fs_vfs_setattr_dotl(struct dentry *dentry, struct iattr *iattr)
557{ 556{
558 int retval; 557 int retval;
559 struct v9fs_session_info *v9ses;
560 struct p9_fid *fid; 558 struct p9_fid *fid;
561 struct p9_iattr_dotl p9attr; 559 struct p9_iattr_dotl p9attr;
562 struct inode *inode = dentry->d_inode; 560 struct inode *inode = dentry->d_inode;
@@ -577,8 +575,6 @@ int v9fs_vfs_setattr_dotl(struct dentry *dentry, struct iattr *iattr)
577 p9attr.mtime_sec = iattr->ia_mtime.tv_sec; 575 p9attr.mtime_sec = iattr->ia_mtime.tv_sec;
578 p9attr.mtime_nsec = iattr->ia_mtime.tv_nsec; 576 p9attr.mtime_nsec = iattr->ia_mtime.tv_nsec;
579 577
580 retval = -EPERM;
581 v9ses = v9fs_dentry2v9ses(dentry);
582 fid = v9fs_fid_lookup(dentry); 578 fid = v9fs_fid_lookup(dentry);
583 if (IS_ERR(fid)) 579 if (IS_ERR(fid))
584 return PTR_ERR(fid); 580 return PTR_ERR(fid);
@@ -715,7 +711,7 @@ v9fs_vfs_symlink_dotl(struct inode *dir, struct dentry *dentry,
715 } 711 }
716 712
717 v9fs_invalidate_inode_attr(dir); 713 v9fs_invalidate_inode_attr(dir);
718 if (v9ses->cache) { 714 if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE) {
719 /* Now walk from the parent so we can get an unopened fid. */ 715 /* Now walk from the parent so we can get an unopened fid. */
720 fid = p9_client_walk(dfid, 1, &name, 1); 716 fid = p9_client_walk(dfid, 1, &name, 1);
721 if (IS_ERR(fid)) { 717 if (IS_ERR(fid)) {
@@ -768,7 +764,6 @@ v9fs_vfs_link_dotl(struct dentry *old_dentry, struct inode *dir,
768 struct dentry *dentry) 764 struct dentry *dentry)
769{ 765{
770 int err; 766 int err;
771 char *name;
772 struct dentry *dir_dentry; 767 struct dentry *dir_dentry;
773 struct p9_fid *dfid, *oldfid; 768 struct p9_fid *dfid, *oldfid;
774 struct v9fs_session_info *v9ses; 769 struct v9fs_session_info *v9ses;
@@ -786,8 +781,6 @@ v9fs_vfs_link_dotl(struct dentry *old_dentry, struct inode *dir,
786 if (IS_ERR(oldfid)) 781 if (IS_ERR(oldfid))
787 return PTR_ERR(oldfid); 782 return PTR_ERR(oldfid);
788 783
789 name = (char *) dentry->d_name.name;
790
791 err = p9_client_link(dfid, oldfid, (char *)dentry->d_name.name); 784 err = p9_client_link(dfid, oldfid, (char *)dentry->d_name.name);
792 785
793 if (err < 0) { 786 if (err < 0) {
@@ -973,7 +966,7 @@ int v9fs_refresh_inode_dotl(struct p9_fid *fid, struct inode *inode)
973 */ 966 */
974 i_size = inode->i_size; 967 i_size = inode->i_size;
975 v9fs_stat2inode_dotl(st, inode); 968 v9fs_stat2inode_dotl(st, inode);
976 if (v9ses->cache) 969 if (v9ses->cache == CACHE_LOOSE || v9ses->cache == CACHE_FSCACHE)
977 inode->i_size = i_size; 970 inode->i_size = i_size;
978 spin_unlock(&inode->i_lock); 971 spin_unlock(&inode->i_lock);
979out: 972out: