diff options
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 49 |
1 files changed, 20 insertions, 29 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 7d719c1a18e3..43659ae52e4d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -63,18 +63,23 @@ extern int dir_notify_enable; | |||
63 | #define MAY_ACCESS 16 | 63 | #define MAY_ACCESS 16 |
64 | #define MAY_OPEN 32 | 64 | #define MAY_OPEN 32 |
65 | 65 | ||
66 | #define FMODE_READ 1 | 66 | #define FMODE_READ ((__force fmode_t)1) |
67 | #define FMODE_WRITE 2 | 67 | #define FMODE_WRITE ((__force fmode_t)2) |
68 | 68 | ||
69 | /* Internal kernel extensions */ | 69 | /* Internal kernel extensions */ |
70 | #define FMODE_LSEEK 4 | 70 | #define FMODE_LSEEK ((__force fmode_t)4) |
71 | #define FMODE_PREAD 8 | 71 | #define FMODE_PREAD ((__force fmode_t)8) |
72 | #define FMODE_PWRITE FMODE_PREAD /* These go hand in hand */ | 72 | #define FMODE_PWRITE FMODE_PREAD /* These go hand in hand */ |
73 | 73 | ||
74 | /* File is being opened for execution. Primary users of this flag are | 74 | /* File is being opened for execution. Primary users of this flag are |
75 | distributed filesystems that can use it to achieve correct ETXTBUSY | 75 | distributed filesystems that can use it to achieve correct ETXTBUSY |
76 | behavior for cross-node execution/opening_for_writing of files */ | 76 | behavior for cross-node execution/opening_for_writing of files */ |
77 | #define FMODE_EXEC 16 | 77 | #define FMODE_EXEC ((__force fmode_t)16) |
78 | |||
79 | #define FMODE_NDELAY ((__force fmode_t)32) | ||
80 | #define FMODE_EXCL ((__force fmode_t)64) | ||
81 | #define FMODE_WRITE_IOCTL ((__force fmode_t)128) | ||
82 | #define FMODE_NDELAY_NOW ((__force fmode_t)256) | ||
78 | 83 | ||
79 | #define RW_MASK 1 | 84 | #define RW_MASK 1 |
80 | #define RWA_MASK 2 | 85 | #define RWA_MASK 2 |
@@ -825,7 +830,7 @@ struct file { | |||
825 | const struct file_operations *f_op; | 830 | const struct file_operations *f_op; |
826 | atomic_long_t f_count; | 831 | atomic_long_t f_count; |
827 | unsigned int f_flags; | 832 | unsigned int f_flags; |
828 | mode_t f_mode; | 833 | fmode_t f_mode; |
829 | loff_t f_pos; | 834 | loff_t f_pos; |
830 | struct fown_struct f_owner; | 835 | struct fown_struct f_owner; |
831 | unsigned int f_uid, f_gid; | 836 | unsigned int f_uid, f_gid; |
@@ -1152,6 +1157,7 @@ struct super_block { | |||
1152 | char s_id[32]; /* Informational name */ | 1157 | char s_id[32]; /* Informational name */ |
1153 | 1158 | ||
1154 | void *s_fs_info; /* Filesystem private info */ | 1159 | void *s_fs_info; /* Filesystem private info */ |
1160 | fmode_t s_mode; | ||
1155 | 1161 | ||
1156 | /* | 1162 | /* |
1157 | * The next field is for VFS *only*. No filesystems have any business | 1163 | * The next field is for VFS *only*. No filesystems have any business |
@@ -1266,20 +1272,7 @@ int generic_osync_inode(struct inode *, struct address_space *, int); | |||
1266 | * to have different dirent layouts depending on the binary type. | 1272 | * to have different dirent layouts depending on the binary type. |
1267 | */ | 1273 | */ |
1268 | typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned); | 1274 | typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned); |
1269 | 1275 | struct block_device_operations; | |
1270 | struct block_device_operations { | ||
1271 | int (*open) (struct inode *, struct file *); | ||
1272 | int (*release) (struct inode *, struct file *); | ||
1273 | int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long); | ||
1274 | long (*unlocked_ioctl) (struct file *, unsigned, unsigned long); | ||
1275 | long (*compat_ioctl) (struct file *, unsigned, unsigned long); | ||
1276 | int (*direct_access) (struct block_device *, sector_t, | ||
1277 | void **, unsigned long *); | ||
1278 | int (*media_changed) (struct gendisk *); | ||
1279 | int (*revalidate_disk) (struct gendisk *); | ||
1280 | int (*getgeo)(struct block_device *, struct hd_geometry *); | ||
1281 | struct module *owner; | ||
1282 | }; | ||
1283 | 1276 | ||
1284 | /* These macros are for out of kernel modules to test that | 1277 | /* These macros are for out of kernel modules to test that |
1285 | * the kernel supports the unlocked_ioctl and compat_ioctl | 1278 | * the kernel supports the unlocked_ioctl and compat_ioctl |
@@ -1713,7 +1706,7 @@ extern struct block_device *bdget(dev_t); | |||
1713 | extern void bd_set_size(struct block_device *, loff_t size); | 1706 | extern void bd_set_size(struct block_device *, loff_t size); |
1714 | extern void bd_forget(struct inode *inode); | 1707 | extern void bd_forget(struct inode *inode); |
1715 | extern void bdput(struct block_device *); | 1708 | extern void bdput(struct block_device *); |
1716 | extern struct block_device *open_by_devnum(dev_t, unsigned); | 1709 | extern struct block_device *open_by_devnum(dev_t, fmode_t); |
1717 | #else | 1710 | #else |
1718 | static inline void bd_forget(struct inode *inode) {} | 1711 | static inline void bd_forget(struct inode *inode) {} |
1719 | #endif | 1712 | #endif |
@@ -1723,13 +1716,10 @@ extern const struct file_operations bad_sock_fops; | |||
1723 | extern const struct file_operations def_fifo_fops; | 1716 | extern const struct file_operations def_fifo_fops; |
1724 | #ifdef CONFIG_BLOCK | 1717 | #ifdef CONFIG_BLOCK |
1725 | extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); | 1718 | extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); |
1726 | extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long); | 1719 | extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long); |
1727 | extern int blkdev_driver_ioctl(struct inode *inode, struct file *file, | ||
1728 | struct gendisk *disk, unsigned cmd, | ||
1729 | unsigned long arg); | ||
1730 | extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); | 1720 | extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); |
1731 | extern int blkdev_get(struct block_device *, mode_t, unsigned); | 1721 | extern int blkdev_get(struct block_device *, fmode_t); |
1732 | extern int blkdev_put(struct block_device *); | 1722 | extern int blkdev_put(struct block_device *, fmode_t); |
1733 | extern int bd_claim(struct block_device *, void *); | 1723 | extern int bd_claim(struct block_device *, void *); |
1734 | extern void bd_release(struct block_device *); | 1724 | extern void bd_release(struct block_device *); |
1735 | #ifdef CONFIG_SYSFS | 1725 | #ifdef CONFIG_SYSFS |
@@ -1760,9 +1750,10 @@ extern void chrdev_show(struct seq_file *,off_t); | |||
1760 | extern const char *__bdevname(dev_t, char *buffer); | 1750 | extern const char *__bdevname(dev_t, char *buffer); |
1761 | extern const char *bdevname(struct block_device *bdev, char *buffer); | 1751 | extern const char *bdevname(struct block_device *bdev, char *buffer); |
1762 | extern struct block_device *lookup_bdev(const char *); | 1752 | extern struct block_device *lookup_bdev(const char *); |
1763 | extern struct block_device *open_bdev_excl(const char *, int, void *); | 1753 | extern struct block_device *open_bdev_exclusive(const char *, fmode_t, void *); |
1764 | extern void close_bdev_excl(struct block_device *); | 1754 | extern void close_bdev_exclusive(struct block_device *, fmode_t); |
1765 | extern void blkdev_show(struct seq_file *,off_t); | 1755 | extern void blkdev_show(struct seq_file *,off_t); |
1756 | |||
1766 | #else | 1757 | #else |
1767 | #define BLKDEV_MAJOR_HASH_SIZE 0 | 1758 | #define BLKDEV_MAJOR_HASH_SIZE 0 |
1768 | #endif | 1759 | #endif |