diff options
author | Christoph Hellwig <hch@lst.de> | 2011-07-08 08:36:32 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2011-07-08 08:36:32 -0400 |
commit | 1d5ae5dfeee024d51fb2c0205035d7611a8f0c86 (patch) | |
tree | 080047368d17c754cea7ed2079b2a0b05c3dd857 /fs/xfs/linux-2.6/xfs_buf.h | |
parent | c8da0faf6b07623c473cab42967f943ad4ab7560 (diff) |
xfs: cleanup I/O-related buffer flags
Remove the unused and misnamed _XBF_RUN_QUEUES flag, rename XBF_LOG_BUFFER
to the more fitting XBF_SYNCIO, and split XBF_ORDERED into XBF_FUA and
XBF_FLUSH to allow more fine grained control over the bio flags. Also
cleanup processing of the flags in _xfs_buf_ioapply to make more sense,
and renumber the sparse flag number space to group flags by purpose.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Alex Elder <aelder@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_buf.h')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_buf.h | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index 706c40069116..21604a17e2a3 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h | |||
@@ -46,43 +46,46 @@ typedef enum { | |||
46 | 46 | ||
47 | #define XBF_READ (1 << 0) /* buffer intended for reading from device */ | 47 | #define XBF_READ (1 << 0) /* buffer intended for reading from device */ |
48 | #define XBF_WRITE (1 << 1) /* buffer intended for writing to device */ | 48 | #define XBF_WRITE (1 << 1) /* buffer intended for writing to device */ |
49 | #define XBF_MAPPED (1 << 2) /* buffer mapped (b_addr valid) */ | 49 | #define XBF_READ_AHEAD (1 << 2) /* asynchronous read-ahead */ |
50 | #define XBF_MAPPED (1 << 3) /* buffer mapped (b_addr valid) */ | ||
50 | #define XBF_ASYNC (1 << 4) /* initiator will not wait for completion */ | 51 | #define XBF_ASYNC (1 << 4) /* initiator will not wait for completion */ |
51 | #define XBF_DONE (1 << 5) /* all pages in the buffer uptodate */ | 52 | #define XBF_DONE (1 << 5) /* all pages in the buffer uptodate */ |
52 | #define XBF_DELWRI (1 << 6) /* buffer has dirty pages */ | 53 | #define XBF_DELWRI (1 << 6) /* buffer has dirty pages */ |
53 | #define XBF_STALE (1 << 7) /* buffer has been staled, do not find it */ | 54 | #define XBF_STALE (1 << 7) /* buffer has been staled, do not find it */ |
54 | #define XBF_ORDERED (1 << 11)/* use ordered writes */ | 55 | |
55 | #define XBF_READ_AHEAD (1 << 12)/* asynchronous read-ahead */ | 56 | /* I/O hints for the BIO layer */ |
56 | #define XBF_LOG_BUFFER (1 << 13)/* this is a buffer used for the log */ | 57 | #define XBF_SYNCIO (1 << 10)/* treat this buffer as synchronous I/O */ |
58 | #define XBF_FUA (1 << 11)/* force cache write through mode */ | ||
59 | #define XBF_FLUSH (1 << 12)/* flush the disk cache before a write */ | ||
57 | 60 | ||
58 | /* flags used only as arguments to access routines */ | 61 | /* flags used only as arguments to access routines */ |
59 | #define XBF_LOCK (1 << 14)/* lock requested */ | 62 | #define XBF_LOCK (1 << 15)/* lock requested */ |
60 | #define XBF_TRYLOCK (1 << 15)/* lock requested, but do not wait */ | 63 | #define XBF_TRYLOCK (1 << 16)/* lock requested, but do not wait */ |
61 | #define XBF_DONT_BLOCK (1 << 16)/* do not block in current thread */ | 64 | #define XBF_DONT_BLOCK (1 << 17)/* do not block in current thread */ |
62 | 65 | ||
63 | /* flags used only internally */ | 66 | /* flags used only internally */ |
64 | #define _XBF_PAGES (1 << 18)/* backed by refcounted pages */ | 67 | #define _XBF_PAGES (1 << 20)/* backed by refcounted pages */ |
65 | #define _XBF_RUN_QUEUES (1 << 19)/* run block device task queue */ | 68 | #define _XBF_KMEM (1 << 21)/* backed by heap memory */ |
66 | #define _XBF_KMEM (1 << 20)/* backed by heap memory */ | 69 | #define _XBF_DELWRI_Q (1 << 22)/* buffer on delwri queue */ |
67 | #define _XBF_DELWRI_Q (1 << 21)/* buffer on delwri queue */ | ||
68 | 70 | ||
69 | typedef unsigned int xfs_buf_flags_t; | 71 | typedef unsigned int xfs_buf_flags_t; |
70 | 72 | ||
71 | #define XFS_BUF_FLAGS \ | 73 | #define XFS_BUF_FLAGS \ |
72 | { XBF_READ, "READ" }, \ | 74 | { XBF_READ, "READ" }, \ |
73 | { XBF_WRITE, "WRITE" }, \ | 75 | { XBF_WRITE, "WRITE" }, \ |
76 | { XBF_READ_AHEAD, "READ_AHEAD" }, \ | ||
74 | { XBF_MAPPED, "MAPPED" }, \ | 77 | { XBF_MAPPED, "MAPPED" }, \ |
75 | { XBF_ASYNC, "ASYNC" }, \ | 78 | { XBF_ASYNC, "ASYNC" }, \ |
76 | { XBF_DONE, "DONE" }, \ | 79 | { XBF_DONE, "DONE" }, \ |
77 | { XBF_DELWRI, "DELWRI" }, \ | 80 | { XBF_DELWRI, "DELWRI" }, \ |
78 | { XBF_STALE, "STALE" }, \ | 81 | { XBF_STALE, "STALE" }, \ |
79 | { XBF_ORDERED, "ORDERED" }, \ | 82 | { XBF_SYNCIO, "SYNCIO" }, \ |
80 | { XBF_READ_AHEAD, "READ_AHEAD" }, \ | 83 | { XBF_FUA, "FUA" }, \ |
84 | { XBF_FLUSH, "FLUSH" }, \ | ||
81 | { XBF_LOCK, "LOCK" }, /* should never be set */\ | 85 | { XBF_LOCK, "LOCK" }, /* should never be set */\ |
82 | { XBF_TRYLOCK, "TRYLOCK" }, /* ditto */\ | 86 | { XBF_TRYLOCK, "TRYLOCK" }, /* ditto */\ |
83 | { XBF_DONT_BLOCK, "DONT_BLOCK" }, /* ditto */\ | 87 | { XBF_DONT_BLOCK, "DONT_BLOCK" }, /* ditto */\ |
84 | { _XBF_PAGES, "PAGES" }, \ | 88 | { _XBF_PAGES, "PAGES" }, \ |
85 | { _XBF_RUN_QUEUES, "RUN_QUEUES" }, \ | ||
86 | { _XBF_KMEM, "KMEM" }, \ | 89 | { _XBF_KMEM, "KMEM" }, \ |
87 | { _XBF_DELWRI_Q, "DELWRI_Q" } | 90 | { _XBF_DELWRI_Q, "DELWRI_Q" } |
88 | 91 | ||
@@ -230,8 +233,9 @@ extern void xfs_buf_terminate(void); | |||
230 | 233 | ||
231 | 234 | ||
232 | #define XFS_BUF_BFLAGS(bp) ((bp)->b_flags) | 235 | #define XFS_BUF_BFLAGS(bp) ((bp)->b_flags) |
233 | #define XFS_BUF_ZEROFLAGS(bp) ((bp)->b_flags &= \ | 236 | #define XFS_BUF_ZEROFLAGS(bp) \ |
234 | ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI|XBF_ORDERED)) | 237 | ((bp)->b_flags &= ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI| \ |
238 | XBF_SYNCIO|XBF_FUA|XBF_FLUSH)) | ||
235 | 239 | ||
236 | void xfs_buf_stale(struct xfs_buf *bp); | 240 | void xfs_buf_stale(struct xfs_buf *bp); |
237 | #define XFS_BUF_STALE(bp) xfs_buf_stale(bp); | 241 | #define XFS_BUF_STALE(bp) xfs_buf_stale(bp); |
@@ -263,10 +267,6 @@ void xfs_buf_stale(struct xfs_buf *bp); | |||
263 | #define XFS_BUF_UNASYNC(bp) ((bp)->b_flags &= ~XBF_ASYNC) | 267 | #define XFS_BUF_UNASYNC(bp) ((bp)->b_flags &= ~XBF_ASYNC) |
264 | #define XFS_BUF_ISASYNC(bp) ((bp)->b_flags & XBF_ASYNC) | 268 | #define XFS_BUF_ISASYNC(bp) ((bp)->b_flags & XBF_ASYNC) |
265 | 269 | ||
266 | #define XFS_BUF_ORDERED(bp) ((bp)->b_flags |= XBF_ORDERED) | ||
267 | #define XFS_BUF_UNORDERED(bp) ((bp)->b_flags &= ~XBF_ORDERED) | ||
268 | #define XFS_BUF_ISORDERED(bp) ((bp)->b_flags & XBF_ORDERED) | ||
269 | |||
270 | #define XFS_BUF_HOLD(bp) xfs_buf_hold(bp) | 270 | #define XFS_BUF_HOLD(bp) xfs_buf_hold(bp) |
271 | #define XFS_BUF_READ(bp) ((bp)->b_flags |= XBF_READ) | 271 | #define XFS_BUF_READ(bp) ((bp)->b_flags |= XBF_READ) |
272 | #define XFS_BUF_UNREAD(bp) ((bp)->b_flags &= ~XBF_READ) | 272 | #define XFS_BUF_UNREAD(bp) ((bp)->b_flags &= ~XBF_READ) |