aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p/vfs_inode.c
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2011-08-03 10:25:32 -0400
committerEric Van Hensbergen <ericvh@gmail.com>2011-09-06 09:17:15 -0400
commitf88657ce3f9713a0c62101dffb0e972a979e77b9 (patch)
treed5541a3d82c8c1d65e11e397582eb8a6c2d627e9 /fs/9p/vfs_inode.c
parentb49d8b5d7007a673796f3f99688b46931293873e (diff)
fs/9p: Add OS dependent open flags in 9p protocol
Some of the flags are OS/arch dependent we add a 9p protocol value which maps to asm-generic/fcntl.h values in Linux Based on the original patch from Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Diffstat (limited to 'fs/9p/vfs_inode.c')
-rw-r--r--fs/9p/vfs_inode.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 3563cace0a2e..9e3ea6ce6951 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -553,6 +553,19 @@ v9fs_inode_from_fid(struct v9fs_session_info *v9ses, struct p9_fid *fid,
553} 553}
554 554
555/** 555/**
556 * v9fs_at_to_dotl_flags- convert Linux specific AT flags to
557 * plan 9 AT flag.
558 * @flags: flags to convert
559 */
560static int v9fs_at_to_dotl_flags(int flags)
561{
562 int rflags = 0;
563 if (flags & AT_REMOVEDIR)
564 rflags |= P9_DOTL_AT_REMOVEDIR;
565 return rflags;
566}
567
568/**
556 * v9fs_remove - helper function to remove files and directories 569 * v9fs_remove - helper function to remove files and directories
557 * @dir: directory inode that is being deleted 570 * @dir: directory inode that is being deleted
558 * @dentry: dentry that is being deleted 571 * @dentry: dentry that is being deleted
@@ -579,7 +592,8 @@ static int v9fs_remove(struct inode *dir, struct dentry *dentry, int flags)
579 return retval; 592 return retval;
580 } 593 }
581 if (v9fs_proto_dotl(v9ses)) 594 if (v9fs_proto_dotl(v9ses))
582 retval = p9_client_unlinkat(dfid, dentry->d_name.name, flags); 595 retval = p9_client_unlinkat(dfid, dentry->d_name.name,
596 v9fs_at_to_dotl_flags(flags));
583 if (retval == -EOPNOTSUPP) { 597 if (retval == -EOPNOTSUPP) {
584 /* Try the one based on path */ 598 /* Try the one based on path */
585 v9fid = v9fs_fid_clone(dentry); 599 v9fid = v9fs_fid_clone(dentry);