diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2009-06-30 14:12:23 -0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2009-06-30 14:12:23 -0400 |
commit | e0a43ddcc08c34dbd666d93600fd23914505f4aa (patch) | |
tree | 103449845b1ffaf8f32ed98a1a543276227ec087 /include | |
parent | 201fa69a2849536ef2912e8e971ec0b01c04eff4 (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.h | 20 |
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 | |||
265 | struct fuse_mknod_in { | 272 | struct 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 | ||
270 | struct fuse_mkdir_in { | 279 | struct fuse_mkdir_in { |
271 | __u32 mode; | 280 | __u32 mode; |
272 | __u32 padding; | 281 | __u32 umask; |
273 | }; | 282 | }; |
274 | 283 | ||
275 | struct fuse_rename_in { | 284 | struct fuse_rename_in { |
@@ -301,7 +310,14 @@ struct fuse_setattr_in { | |||
301 | 310 | ||
302 | struct fuse_open_in { | 311 | struct fuse_open_in { |
303 | __u32 flags; | 312 | __u32 flags; |
313 | __u32 unused; | ||
314 | }; | ||
315 | |||
316 | struct fuse_create_in { | ||
317 | __u32 flags; | ||
304 | __u32 mode; | 318 | __u32 mode; |
319 | __u32 umask; | ||
320 | __u32 padding; | ||
305 | }; | 321 | }; |
306 | 322 | ||
307 | struct fuse_open_out { | 323 | struct fuse_open_out { |