1
2
3
4
5#ifndef __LINUX_BLK_TYPES_H
6#define __LINUX_BLK_TYPES_H
7
8#ifdef CONFIG_BLOCK
9
10#include <linux/types.h>
11
12struct bio_set;
13struct bio;
14struct bio_integrity_payload;
15struct page;
16struct block_device;
17typedef void (bio_end_io_t) (struct bio *, int);
18typedef void (bio_destructor_t) (struct bio *);
19
20
21
22
23struct bio_vec {
24 struct page *bv_page;
25 unsigned int bv_len;
26 unsigned int bv_offset;
27};
28
29
30
31
32
33struct bio {
34 sector_t bi_sector;
35
36 struct bio *bi_next;
37 struct block_device *bi_bdev;
38 unsigned long bi_flags;
39 unsigned long bi_rw;
40
41
42
43 unsigned short bi_vcnt;
44 unsigned short bi_idx;
45
46
47
48
49 unsigned int bi_phys_segments;
50
51 unsigned int bi_size;
52
53
54
55
56
57 unsigned int bi_seg_front_size;
58 unsigned int bi_seg_back_size;
59
60 unsigned int bi_max_vecs;
61
62 unsigned int bi_comp_cpu;
63
64 atomic_t bi_cnt;
65
66 struct bio_vec *bi_io_vec;
67
68 bio_end_io_t *bi_end_io;
69
70 void *bi_private;
71#if defined(CONFIG_BLK_DEV_INTEGRITY)
72 struct bio_integrity_payload *bi_integrity;
73#endif
74
75 bio_destructor_t *bi_destructor;
76
77
78
79
80
81
82 struct bio_vec bi_inline_vecs[0];
83};
84
85
86
87
88#define BIO_UPTODATE 0
89#define BIO_RW_BLOCK 1
90#define BIO_EOF 2
91#define BIO_SEG_VALID 3
92#define BIO_CLONED 4
93#define BIO_BOUNCED 5
94#define BIO_USER_MAPPED 6
95#define BIO_EOPNOTSUPP 7
96#define BIO_CPU_AFFINE 8
97#define BIO_NULL_MAPPED 9
98#define BIO_FS_INTEGRITY 10
99#define BIO_QUIET 11
100#define BIO_MAPPED_INTEGRITY 12
101#define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag)))
102
103
104
105
106#define BIO_POOL_BITS (4)
107#define BIO_POOL_NONE ((1UL << BIO_POOL_BITS) - 1)
108#define BIO_POOL_OFFSET (BITS_PER_LONG - BIO_POOL_BITS)
109#define BIO_POOL_MASK (1UL << BIO_POOL_OFFSET)
110#define BIO_POOL_IDX(bio) ((bio)->bi_flags >> BIO_POOL_OFFSET)
111
112#endif
113
114
115
116
117
118enum rq_flag_bits {
119
120 __REQ_WRITE,
121 __REQ_FAILFAST_DEV,
122 __REQ_FAILFAST_TRANSPORT,
123 __REQ_FAILFAST_DRIVER,
124
125 __REQ_SYNC,
126 __REQ_META,
127 __REQ_DISCARD,
128 __REQ_NOIDLE,
129
130
131 __REQ_UNPLUG,
132 __REQ_RAHEAD,
133 __REQ_THROTTLED,
134
135
136
137 __REQ_SORTED,
138 __REQ_SOFTBARRIER,
139 __REQ_FUA,
140 __REQ_NOMERGE,
141 __REQ_STARTED,
142 __REQ_DONTPREP,
143 __REQ_QUEUED,
144 __REQ_ELVPRIV,
145 __REQ_FAILED,
146 __REQ_QUIET,
147 __REQ_PREEMPT,
148 __REQ_ALLOCED,
149 __REQ_COPY_USER,
150 __REQ_FLUSH,
151 __REQ_IO_STAT,
152 __REQ_MIXED_MERGE,
153 __REQ_SECURE,
154 __REQ_NR_BITS,
155};
156
157#define REQ_WRITE (1 << __REQ_WRITE)
158#define REQ_FAILFAST_DEV (1 << __REQ_FAILFAST_DEV)
159#define REQ_FAILFAST_TRANSPORT (1 << __REQ_FAILFAST_TRANSPORT)
160#define REQ_FAILFAST_DRIVER (1 << __REQ_FAILFAST_DRIVER)
161#define REQ_SYNC (1 << __REQ_SYNC)
162#define REQ_META (1 << __REQ_META)
163#define REQ_DISCARD (1 << __REQ_DISCARD)
164#define REQ_NOIDLE (1 << __REQ_NOIDLE)
165
166#define REQ_FAILFAST_MASK \
167 (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER)
168#define REQ_COMMON_MASK \
169 (REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_DISCARD | \
170 REQ_NOIDLE | REQ_FLUSH | REQ_FUA)
171#define REQ_CLONE_MASK REQ_COMMON_MASK
172
173#define REQ_UNPLUG (1 << __REQ_UNPLUG)
174#define REQ_RAHEAD (1 << __REQ_RAHEAD)
175#define REQ_THROTTLED (1 << __REQ_THROTTLED)
176
177#define REQ_SORTED (1 << __REQ_SORTED)
178#define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER)
179#define REQ_FUA (1 << __REQ_FUA)
180#define REQ_NOMERGE (1 << __REQ_NOMERGE)
181#define REQ_STARTED (1 << __REQ_STARTED)
182#define REQ_DONTPREP (1 << __REQ_DONTPREP)
183#define REQ_QUEUED (1 << __REQ_QUEUED)
184#define REQ_ELVPRIV (1 << __REQ_ELVPRIV)
185#define REQ_FAILED (1 << __REQ_FAILED)
186#define REQ_QUIET (1 << __REQ_QUIET)
187#define REQ_PREEMPT (1 << __REQ_PREEMPT)
188#define REQ_ALLOCED (1 << __REQ_ALLOCED)
189#define REQ_COPY_USER (1 << __REQ_COPY_USER)
190#define REQ_FLUSH (1 << __REQ_FLUSH)
191#define REQ_IO_STAT (1 << __REQ_IO_STAT)
192#define REQ_MIXED_MERGE (1 << __REQ_MIXED_MERGE)
193#define REQ_SECURE (1 << __REQ_SECURE)
194
195#endif
196