aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fs.h
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2011-04-13 07:32:28 -0400
committerPatrick McHardy <kaber@trash.net>2011-04-13 07:32:28 -0400
commitb32e3dc7860d00124fa432dba09667e647cb9bcc (patch)
tree2fa6e56f389431dfb84609d3d7572cad76e88e71 /include/linux/fs.h
parent6604271c5bc658a6067ed0c3deba4d89e0e50382 (diff)
parent96120d86fe302c006259baee9061eea9e1b9e486 (diff)
Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r--include/linux/fs.h44
1 files changed, 20 insertions, 24 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 7061a8587ee3..52f283c1edb2 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
@@ -367,6 +357,8 @@ struct inodes_stat_t {
367#define FS_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/ 357#define FS_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/
368#define FS_EXTENT_FL 0x00080000 /* Extents */ 358#define FS_EXTENT_FL 0x00080000 /* Extents */
369#define FS_DIRECTIO_FL 0x00100000 /* Use direct i/o */ 359#define FS_DIRECTIO_FL 0x00100000 /* Use direct i/o */
360#define FS_NOCOW_FL 0x00800000 /* Do not cow file */
361#define FS_COW_FL 0x02000000 /* Cow file */
370#define FS_RESERVED_FL 0x80000000 /* reserved for ext2 lib */ 362#define FS_RESERVED_FL 0x80000000 /* reserved for ext2 lib */
371 363
372#define FS_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */ 364#define FS_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */
@@ -586,7 +578,6 @@ typedef int (*read_actor_t)(read_descriptor_t *, struct page *,
586struct address_space_operations { 578struct address_space_operations {
587 int (*writepage)(struct page *page, struct writeback_control *wbc); 579 int (*writepage)(struct page *page, struct writeback_control *wbc);
588 int (*readpage)(struct file *, struct page *); 580 int (*readpage)(struct file *, struct page *);
589 void (*sync_page)(struct page *);
590 581
591 /* Write back some dirty pages from this mapping. */ 582 /* Write back some dirty pages from this mapping. */
592 int (*writepages)(struct address_space *, struct writeback_control *); 583 int (*writepages)(struct address_space *, struct writeback_control *);
@@ -662,9 +653,9 @@ struct address_space {
662 653
663struct block_device { 654struct block_device {
664 dev_t bd_dev; /* not a kdev_t - it's a search key */ 655 dev_t bd_dev; /* not a kdev_t - it's a search key */
656 int bd_openers;
665 struct inode * bd_inode; /* will die */ 657 struct inode * bd_inode; /* will die */
666 struct super_block * bd_super; 658 struct super_block * bd_super;
667 int bd_openers;
668 struct mutex bd_mutex; /* open/close mutex */ 659 struct mutex bd_mutex; /* open/close mutex */
669 struct list_head bd_inodes; 660 struct list_head bd_inodes;
670 void * bd_claiming; 661 void * bd_claiming;
@@ -1457,8 +1448,13 @@ enum {
1457#define put_fs_excl() atomic_dec(&current->fs_excl) 1448#define put_fs_excl() atomic_dec(&current->fs_excl)
1458#define has_fs_excl() atomic_read(&current->fs_excl) 1449#define has_fs_excl() atomic_read(&current->fs_excl)
1459 1450
1460#define is_owner_or_cap(inode) \ 1451/*
1461 ((current_fsuid() == (inode)->i_uid) || capable(CAP_FOWNER)) 1452 * until VFS tracks user namespaces for inodes, just make all files
1453 * belong to init_user_ns
1454 */
1455extern struct user_namespace init_user_ns;
1456#define inode_userns(inode) (&init_user_ns)
1457extern bool inode_owner_or_capable(const struct inode *inode);
1462 1458
1463/* not quite ready to be deprecated, but... */ 1459/* not quite ready to be deprecated, but... */
1464extern void lock_super(struct super_block *); 1460extern void lock_super(struct super_block *);
@@ -1642,7 +1638,7 @@ struct super_operations {
1642}; 1638};
1643 1639
1644/* 1640/*
1645 * Inode state bits. Protected by inode_lock. 1641 * Inode state bits. Protected by inode->i_lock
1646 * 1642 *
1647 * Three bits determine the dirty state of the inode, I_DIRTY_SYNC, 1643 * Three bits determine the dirty state of the inode, I_DIRTY_SYNC,
1648 * I_DIRTY_DATASYNC and I_DIRTY_PAGES. 1644 * I_DIRTY_DATASYNC and I_DIRTY_PAGES.