diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/shmem_fs.h | 17 | ||||
| -rw-r--r-- | include/uapi/linux/fcntl.h | 15 |
2 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 4d1771c2d29f..50777b5b1e4c 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef __SHMEM_FS_H | 1 | #ifndef __SHMEM_FS_H |
| 2 | #define __SHMEM_FS_H | 2 | #define __SHMEM_FS_H |
| 3 | 3 | ||
| 4 | #include <linux/file.h> | ||
| 4 | #include <linux/swap.h> | 5 | #include <linux/swap.h> |
| 5 | #include <linux/mempolicy.h> | 6 | #include <linux/mempolicy.h> |
| 6 | #include <linux/pagemap.h> | 7 | #include <linux/pagemap.h> |
| @@ -11,6 +12,7 @@ | |||
| 11 | 12 | ||
| 12 | struct shmem_inode_info { | 13 | struct shmem_inode_info { |
| 13 | spinlock_t lock; | 14 | spinlock_t lock; |
| 15 | unsigned int seals; /* shmem seals */ | ||
| 14 | unsigned long flags; | 16 | unsigned long flags; |
| 15 | unsigned long alloced; /* data pages alloced to file */ | 17 | unsigned long alloced; /* data pages alloced to file */ |
| 16 | union { | 18 | union { |
| @@ -65,4 +67,19 @@ static inline struct page *shmem_read_mapping_page( | |||
| 65 | mapping_gfp_mask(mapping)); | 67 | mapping_gfp_mask(mapping)); |
| 66 | } | 68 | } |
| 67 | 69 | ||
| 70 | #ifdef CONFIG_TMPFS | ||
| 71 | |||
| 72 | extern int shmem_add_seals(struct file *file, unsigned int seals); | ||
| 73 | extern int shmem_get_seals(struct file *file); | ||
| 74 | extern long shmem_fcntl(struct file *file, unsigned int cmd, unsigned long arg); | ||
| 75 | |||
| 76 | #else | ||
| 77 | |||
| 78 | static inline long shmem_fcntl(struct file *f, unsigned int c, unsigned long a) | ||
| 79 | { | ||
| 80 | return -EINVAL; | ||
| 81 | } | ||
| 82 | |||
| 83 | #endif | ||
| 84 | |||
| 68 | #endif | 85 | #endif |
diff --git a/include/uapi/linux/fcntl.h b/include/uapi/linux/fcntl.h index 074b886c6be0..beed138bd359 100644 --- a/include/uapi/linux/fcntl.h +++ b/include/uapi/linux/fcntl.h | |||
| @@ -28,6 +28,21 @@ | |||
| 28 | #define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8) | 28 | #define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8) |
| 29 | 29 | ||
| 30 | /* | 30 | /* |
| 31 | * Set/Get seals | ||
| 32 | */ | ||
| 33 | #define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9) | ||
| 34 | #define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10) | ||
| 35 | |||
| 36 | /* | ||
| 37 | * Types of seals | ||
| 38 | */ | ||
| 39 | #define F_SEAL_SEAL 0x0001 /* prevent further seals from being set */ | ||
| 40 | #define F_SEAL_SHRINK 0x0002 /* prevent file from shrinking */ | ||
| 41 | #define F_SEAL_GROW 0x0004 /* prevent file from growing */ | ||
| 42 | #define F_SEAL_WRITE 0x0008 /* prevent writes */ | ||
| 43 | /* (1U << 31) is reserved for signed error codes */ | ||
| 44 | |||
| 45 | /* | ||
| 31 | * Types of directory notifications that may be requested. | 46 | * Types of directory notifications that may be requested. |
| 32 | */ | 47 | */ |
| 33 | #define DN_ACCESS 0x00000001 /* File accessed */ | 48 | #define DN_ACCESS 0x00000001 /* File accessed */ |
