author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> 2011-08-03 19:55:32 +0530
committer: Eric Van Hensbergen <ericvh@gmail.com> 2011-09-06 08:17:15 -0500
commit: f88657ce3f9713a0c62101dffb0e972a979e77b9
parent: b49d8b5d7007a673796f3f99688b46931293873e
Commit Summary:
Diffstat:
1 file changed, 15 insertions, 1 deletion
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
@@ -552,6 +552,19 @@ v9fs_inode_from_fid(struct v9fs_session_info *v9ses, struct p9_fid *fid,
return inode;
}
+/**
+ * v9fs_at_to_dotl_flags- convert Linux specific AT flags to
+ * plan 9 AT flag.
+ * @flags: flags to convert
+ */
+static int v9fs_at_to_dotl_flags(int flags)
+{
+ int rflags = 0;
+ if (flags & AT_REMOVEDIR)
+ rflags |= P9_DOTL_AT_REMOVEDIR;
+ return rflags;
+}
+
/**
* v9fs_remove - helper function to remove files and directories
* @dir: directory inode that is being deleted
@@ -579,7 +592,8 @@ static int v9fs_remove(struct inode *dir, struct dentry *dentry, int flags)
return retval;
}
if (v9fs_proto_dotl(v9ses))
- retval = p9_client_unlinkat(dfid, dentry->d_name.name, flags);
+ retval = p9_client_unlinkat(dfid, dentry->d_name.name,
+ v9fs_at_to_dotl_flags(flags));
if (retval == -EOPNOTSUPP) {
/* Try the one based on path */
v9fid = v9fs_fid_clone(dentry);