aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.rst3
-rw-r--r--include/fuse_common.h15
-rw-r--r--lib/fuse_lowlevel.c2
3 files changed, 19 insertions, 1 deletions
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
@@ -253,6 +253,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
*
* FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine
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;
}