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/linux | |
| 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/linux')
| -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 { |
