]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fuse: implement 'access' low level function 1566/head
authorYan, Zheng <zheng.z.yan@intel.com>
Sun, 30 Mar 2014 01:21:57 +0000 (09:21 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Sun, 30 Mar 2014 05:40:31 +0000 (13:40 +0800)
Add an empty 'access' function to fuse low level functions. This
allow us to use ceph-fuse with fuse_default_permissions = false.
'fuse_default_permissions = false' can significantly improve the
speed of create/removing large number of files.

When fuse_default_permissions is true, the fuse kernel module sends
a getattr request whenever the kernel needs to check a directory's
permission. getattr (STAT_CAP_INODE_ALL) can be very slow if the
directory was just modified.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/client/fuse_ll.cc

index d9f6a8d5249a48d9e5400bc86f620bcc784fbba0..14cb6d47f110b3a85def75c7b289c39c305156f6 100644 (file)
@@ -591,6 +591,11 @@ static void fuse_ll_releasedir(fuse_req_t req, fuse_ino_t ino,
   fuse_reply_err(req, 0);
 }
 
+static void fuse_ll_access(fuse_req_t req, fuse_ino_t ino, int mask)
+{
+  fuse_reply_err(req, 0);
+}
+
 static void fuse_ll_create(fuse_req_t req, fuse_ino_t parent, const char *name,
                           mode_t mode, struct fuse_file_info *fi)
 {
@@ -733,7 +738,7 @@ const static struct fuse_lowlevel_ops fuse_ll_oper = {
  getxattr: fuse_ll_getxattr,
  listxattr: fuse_ll_listxattr,
  removexattr: fuse_ll_removexattr,
- access: 0,
+ access: fuse_ll_access,
  create: fuse_ll_create,
  getlk: 0,
  setlk: 0,