From e16fdc06d7473f00499b6b03fb7bd06259a22135 Mon Sep 17 00:00:00 2001 From: Nikolaus Rath Date: Tue, 22 Nov 2016 15:15:05 -0800 Subject: Add support for FUSE_POSIX_ACL Fixes #117. --- ChangeLog.rst | 3 ++- include/fuse_common.h | 15 +++++++++++++++ lib/fuse_lowlevel.c | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog.rst b/ChangeLog.rst index c1d43a2..9c1a5dd 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -22,7 +22,8 @@ UNRELEASED CHANGES particular capability can still be disabled by unsetting the corresponding bit of `fuse_conn_info.wants` in the init() handler. -* Added FUSE_CAP_PARALLEL_DIROPS feature flag. +* Added FUSE_CAP_PARALLEL_DIROPS and FUSE_CAP_POSIX_ACL feature flags. + FUSE 3.0.0-rc2 (2016-11-06) =========================== diff --git a/include/fuse_common.h b/include/fuse_common.h index 7bf8008..f336129 100644 --- a/include/fuse_common.h +++ b/include/fuse_common.h @@ -252,6 +252,21 @@ struct fuse_file_info { */ #define FUSE_CAP_PARALLEL_DIROPS (1 << 18) +/** + * Indicates support for POSIX ACL. + * + * If this feature is enabled, the kernel will cache and have + * responsibility for enforcing ACLs. ACL will be stored as xattrs and + * passed to userspace, which is responsible for updating the ACLs in + * the filesystem, keeping the file mode in sync with the ACL, and + * ensuring inheritance of default ACLs when new filesystem nodes are + * created. Note that this requires that the file system is able to + * parse and interpret the xattr representation of ACLs. + * + * This feature is disabled by default. + */ +#define FUSE_CAP_POSIX_ACL (1 << 19) + /** * Ioctl flags * diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c index c7e3ebf..3941c7f 100644 --- a/lib/fuse_lowlevel.c +++ b/lib/fuse_lowlevel.c @@ -1877,6 +1877,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) se->conn.capable |= FUSE_CAP_NO_OPEN_SUPPORT; if (arg->flags & FUSE_PARALLEL_DIROPS) se->conn.capable |= FUSE_CAP_PARALLEL_DIROPS; + if (arg->flags & FUSE_POSIX_ACL) + se->conn.capable |= FUSE_CAP_POSIX_ACL; } else { se->conn.max_readahead = 0; } -- cgit v1.2.3