diff options
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 12529e966350..b677bd77f2d6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -138,16 +138,10 @@ struct inodes_stat_t { | |||
138 | * block layer could (in theory) choose to ignore this | 138 | * block layer could (in theory) choose to ignore this |
139 | * request if it runs into resource problems. | 139 | * request if it runs into resource problems. |
140 | * WRITE A normal async write. Device will be plugged. | 140 | * WRITE A normal async write. Device will be plugged. |
141 | * WRITE_SYNC_PLUG Synchronous write. Identical to WRITE, but passes down | 141 | * WRITE_SYNC Synchronous write. Identical to WRITE, but passes down |
142 | * the hint that someone will be waiting on this IO | 142 | * the hint that someone will be waiting on this IO |
143 | * shortly. The device must still be unplugged explicitly, | 143 | * shortly. The write equivalent of READ_SYNC. |
144 | * WRITE_SYNC_PLUG does not do this as we could be | 144 | * WRITE_ODIRECT Special case write for O_DIRECT only. |
145 | * submitting more writes before we actually wait on any | ||
146 | * of them. | ||
147 | * WRITE_SYNC Like WRITE_SYNC_PLUG, but also unplugs the device | ||
148 | * immediately after submission. The write equivalent | ||
149 | * of READ_SYNC. | ||
150 | * WRITE_ODIRECT_PLUG Special case write for O_DIRECT only. | ||
151 | * WRITE_FLUSH Like WRITE_SYNC but with preceding cache flush. | 145 | * WRITE_FLUSH Like WRITE_SYNC but with preceding cache flush. |
152 | * WRITE_FUA Like WRITE_SYNC but data is guaranteed to be on | 146 | * WRITE_FUA Like WRITE_SYNC but data is guaranteed to be on |
153 | * non-volatile media on completion. | 147 | * non-volatile media on completion. |
@@ -163,18 +157,14 @@ struct inodes_stat_t { | |||
163 | #define WRITE RW_MASK | 157 | #define WRITE RW_MASK |
164 | #define READA RWA_MASK | 158 | #define READA RWA_MASK |
165 | 159 | ||
166 | #define READ_SYNC (READ | REQ_SYNC | REQ_UNPLUG) | 160 | #define READ_SYNC (READ | REQ_SYNC) |
167 | #define READ_META (READ | REQ_META) | 161 | #define READ_META (READ | REQ_META) |
168 | #define WRITE_SYNC_PLUG (WRITE | REQ_SYNC | REQ_NOIDLE) | 162 | #define WRITE_SYNC (WRITE | REQ_SYNC | REQ_NOIDLE) |
169 | #define WRITE_SYNC (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_UNPLUG) | 163 | #define WRITE_ODIRECT (WRITE | REQ_SYNC) |
170 | #define WRITE_ODIRECT_PLUG (WRITE | REQ_SYNC) | ||
171 | #define WRITE_META (WRITE | REQ_META) | 164 | #define WRITE_META (WRITE | REQ_META) |
172 | #define WRITE_FLUSH (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_UNPLUG | \ | 165 | #define WRITE_FLUSH (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH) |
173 | REQ_FLUSH) | 166 | #define WRITE_FUA (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FUA) |
174 | #define WRITE_FUA (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_UNPLUG | \ | 167 | #define WRITE_FLUSH_FUA (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH | REQ_FUA) |
175 | REQ_FUA) | ||
176 | #define WRITE_FLUSH_FUA (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_UNPLUG | \ | ||
177 | REQ_FLUSH | REQ_FUA) | ||
178 | 168 | ||
179 | #define SEL_IN 1 | 169 | #define SEL_IN 1 |
180 | #define SEL_OUT 2 | 170 | #define SEL_OUT 2 |
@@ -586,7 +576,6 @@ typedef int (*read_actor_t)(read_descriptor_t *, struct page *, | |||
586 | struct address_space_operations { | 576 | struct address_space_operations { |
587 | int (*writepage)(struct page *page, struct writeback_control *wbc); | 577 | int (*writepage)(struct page *page, struct writeback_control *wbc); |
588 | int (*readpage)(struct file *, struct page *); | 578 | int (*readpage)(struct file *, struct page *); |
589 | void (*sync_page)(struct page *); | ||
590 | 579 | ||
591 | /* Write back some dirty pages from this mapping. */ | 580 | /* Write back some dirty pages from this mapping. */ |
592 | int (*writepages)(struct address_space *, struct writeback_control *); | 581 | int (*writepages)(struct address_space *, struct writeback_control *); |
@@ -1457,8 +1446,13 @@ enum { | |||
1457 | #define put_fs_excl() atomic_dec(¤t->fs_excl) | 1446 | #define put_fs_excl() atomic_dec(¤t->fs_excl) |
1458 | #define has_fs_excl() atomic_read(¤t->fs_excl) | 1447 | #define has_fs_excl() atomic_read(¤t->fs_excl) |
1459 | 1448 | ||
1460 | #define is_owner_or_cap(inode) \ | 1449 | /* |
1461 | ((current_fsuid() == (inode)->i_uid) || capable(CAP_FOWNER)) | 1450 | * until VFS tracks user namespaces for inodes, just make all files |
1451 | * belong to init_user_ns | ||
1452 | */ | ||
1453 | extern struct user_namespace init_user_ns; | ||
1454 | #define inode_userns(inode) (&init_user_ns) | ||
1455 | extern bool inode_owner_or_capable(const struct inode *inode); | ||
1462 | 1456 | ||
1463 | /* not quite ready to be deprecated, but... */ | 1457 | /* not quite ready to be deprecated, but... */ |
1464 | extern void lock_super(struct super_block *); | 1458 | extern void lock_super(struct super_block *); |
@@ -1642,7 +1636,7 @@ struct super_operations { | |||
1642 | }; | 1636 | }; |
1643 | 1637 | ||
1644 | /* | 1638 | /* |
1645 | * Inode state bits. Protected by inode_lock. | 1639 | * Inode state bits. Protected by inode->i_lock |
1646 | * | 1640 | * |
1647 | * Three bits determine the dirty state of the inode, I_DIRTY_SYNC, | 1641 | * Three bits determine the dirty state of the inode, I_DIRTY_SYNC, |
1648 | * I_DIRTY_DATASYNC and I_DIRTY_PAGES. | 1642 | * I_DIRTY_DATASYNC and I_DIRTY_PAGES. |