aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2009-06-30 14:12:23 -0400
committerMiklos Szeredi <mszeredi@suse.cz>2009-06-30 14:12:23 -0400
commite0a43ddcc08c34dbd666d93600fd23914505f4aa (patch)
tree103449845b1ffaf8f32ed98a1a543276227ec087 /include
parent201fa69a2849536ef2912e8e971ec0b01c04eff4 (diff)
fuse: allow umask processing in userspace
This patch lets filesystems handle masking the file mode on creation. This is needed if filesystem is using ACLs. - The CREATE, MKDIR and MKNOD requests are extended with a "umask" parameter. - A new FUSE_DONT_MASK flag is added to the INIT request/reply. With this the filesystem may request that the create mode is not masked. CC: Jean-Pierre André <jean-pierre.andre@wanadoo.fr> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'include')
-rw-r--r--include/linux/fuse.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/include/linux/fuse.h b/include/linux/fuse.h
index d41ed593f79f..e2b816a62488 100644
--- a/include/linux/fuse.h
+++ b/include/linux/fuse.h
@@ -25,6 +25,9 @@
25 * - add IOCTL message 25 * - add IOCTL message
26 * - add unsolicited notification support 26 * - add unsolicited notification support
27 * - add POLL message and NOTIFY_POLL notification 27 * - add POLL message and NOTIFY_POLL notification
28 *
29 * 7.12
30 * - add umask flag to input argument of open, mknod and mkdir
28 */ 31 */
29 32
30#ifndef _LINUX_FUSE_H 33#ifndef _LINUX_FUSE_H
@@ -36,7 +39,7 @@
36#define FUSE_KERNEL_VERSION 7 39#define FUSE_KERNEL_VERSION 7
37 40
38/** Minor version number of this interface */ 41/** Minor version number of this interface */
39#define FUSE_KERNEL_MINOR_VERSION 11 42#define FUSE_KERNEL_MINOR_VERSION 12
40 43
41/** The node ID of the root inode */ 44/** The node ID of the root inode */
42#define FUSE_ROOT_ID 1 45#define FUSE_ROOT_ID 1
@@ -112,6 +115,7 @@ struct fuse_file_lock {
112 * INIT request/reply flags 115 * INIT request/reply flags
113 * 116 *
114 * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".." 117 * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
118 * FUSE_DONT_MASK: don't apply umask to file mode on create operations
115 */ 119 */
116#define FUSE_ASYNC_READ (1 << 0) 120#define FUSE_ASYNC_READ (1 << 0)
117#define FUSE_POSIX_LOCKS (1 << 1) 121#define FUSE_POSIX_LOCKS (1 << 1)
@@ -119,6 +123,7 @@ struct fuse_file_lock {
119#define FUSE_ATOMIC_O_TRUNC (1 << 3) 123#define FUSE_ATOMIC_O_TRUNC (1 << 3)
120#define FUSE_EXPORT_SUPPORT (1 << 4) 124#define FUSE_EXPORT_SUPPORT (1 << 4)
121#define FUSE_BIG_WRITES (1 << 5) 125#define FUSE_BIG_WRITES (1 << 5)
126#define FUSE_DONT_MASK (1 << 6)
122 127
123/** 128/**
124 * CUSE INIT request/reply flags 129 * CUSE INIT request/reply flags
@@ -262,14 +267,18 @@ struct fuse_attr_out {
262 struct fuse_attr attr; 267 struct fuse_attr attr;
263}; 268};
264 269
270#define FUSE_COMPAT_MKNOD_IN_SIZE 8
271
265struct fuse_mknod_in { 272struct fuse_mknod_in {
266 __u32 mode; 273 __u32 mode;
267 __u32 rdev; 274 __u32 rdev;
275 __u32 umask;
276 __u32 padding;
268}; 277};
269 278
270struct fuse_mkdir_in { 279struct fuse_mkdir_in {
271 __u32 mode; 280 __u32 mode;
272 __u32 padding; 281 __u32 umask;
273}; 282};
274 283
275struct fuse_rename_in { 284struct fuse_rename_in {
@@ -301,7 +310,14 @@ struct fuse_setattr_in {
301 310
302struct fuse_open_in { 311struct fuse_open_in {
303 __u32 flags; 312 __u32 flags;
313 __u32 unused;
314};
315
316struct fuse_create_in {
317 __u32 flags;
304 __u32 mode; 318 __u32 mode;
319 __u32 umask;
320 __u32 padding;
305}; 321};
306 322
307struct fuse_open_out { 323struct fuse_open_out {