diff options
author | Mike Christie <mchristi@redhat.com> | 2016-08-04 16:23:34 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-08-04 16:25:33 -0400 |
commit | abf545484d31b68777a85c5c8f5b4bcde08283eb (patch) | |
tree | ee91e0a9e679e13cff54ede6b6b489627d72c1b1 /include/linux | |
parent | c1c87c2ba9ec06d8ba9e8a26c18c67a2ba9cd9c1 (diff) |
mm/block: convert rw_page users to bio op use
The rw_page users were not converted to use bio/req ops. As a result
bdev_write_page is not passing down REQ_OP_WRITE and the IOs will
be sent down as reads.
Signed-off-by: Mike Christie <mchristi@redhat.com>
Fixes: 4e1b2d52a80d ("block, fs, drivers: remove REQ_OP compat defs and related code")
Modified by me to:
1) Drop op_flags passing into ->rw_page(), as we don't use it.
2) Make op_is_write() and friends safe to use for !CONFIG_BLOCK
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/blk_types.h | 22 | ||||
-rw-r--r-- | include/linux/blkdev.h | 2 | ||||
-rw-r--r-- | include/linux/fs.h | 3 | ||||
-rw-r--r-- | include/linux/pagemap.h | 2 |
4 files changed, 15 insertions, 14 deletions
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index f254eb264924..14b28ff2caf8 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h | |||
@@ -18,6 +18,17 @@ struct cgroup_subsys_state; | |||
18 | typedef void (bio_end_io_t) (struct bio *); | 18 | typedef void (bio_end_io_t) (struct bio *); |
19 | typedef void (bio_destructor_t) (struct bio *); | 19 | typedef void (bio_destructor_t) (struct bio *); |
20 | 20 | ||
21 | enum req_op { | ||
22 | REQ_OP_READ, | ||
23 | REQ_OP_WRITE, | ||
24 | REQ_OP_DISCARD, /* request to discard sectors */ | ||
25 | REQ_OP_SECURE_ERASE, /* request to securely erase sectors */ | ||
26 | REQ_OP_WRITE_SAME, /* write same block many times */ | ||
27 | REQ_OP_FLUSH, /* request for cache flush */ | ||
28 | }; | ||
29 | |||
30 | #define REQ_OP_BITS 3 | ||
31 | |||
21 | #ifdef CONFIG_BLOCK | 32 | #ifdef CONFIG_BLOCK |
22 | /* | 33 | /* |
23 | * main unit of I/O for the block layer and lower layers (ie drivers and | 34 | * main unit of I/O for the block layer and lower layers (ie drivers and |
@@ -228,17 +239,6 @@ enum rq_flag_bits { | |||
228 | #define REQ_HASHED (1ULL << __REQ_HASHED) | 239 | #define REQ_HASHED (1ULL << __REQ_HASHED) |
229 | #define REQ_MQ_INFLIGHT (1ULL << __REQ_MQ_INFLIGHT) | 240 | #define REQ_MQ_INFLIGHT (1ULL << __REQ_MQ_INFLIGHT) |
230 | 241 | ||
231 | enum req_op { | ||
232 | REQ_OP_READ, | ||
233 | REQ_OP_WRITE, | ||
234 | REQ_OP_DISCARD, /* request to discard sectors */ | ||
235 | REQ_OP_SECURE_ERASE, /* request to securely erase sectors */ | ||
236 | REQ_OP_WRITE_SAME, /* write same block many times */ | ||
237 | REQ_OP_FLUSH, /* request for cache flush */ | ||
238 | }; | ||
239 | |||
240 | #define REQ_OP_BITS 3 | ||
241 | |||
242 | typedef unsigned int blk_qc_t; | 242 | typedef unsigned int blk_qc_t; |
243 | #define BLK_QC_T_NONE -1U | 243 | #define BLK_QC_T_NONE -1U |
244 | #define BLK_QC_T_SHIFT 16 | 244 | #define BLK_QC_T_SHIFT 16 |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index de7935961c27..ccd68c0d01de 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -1672,7 +1672,7 @@ struct blk_dax_ctl { | |||
1672 | struct block_device_operations { | 1672 | struct block_device_operations { |
1673 | int (*open) (struct block_device *, fmode_t); | 1673 | int (*open) (struct block_device *, fmode_t); |
1674 | void (*release) (struct gendisk *, fmode_t); | 1674 | void (*release) (struct gendisk *, fmode_t); |
1675 | int (*rw_page)(struct block_device *, sector_t, struct page *, int rw); | 1675 | int (*rw_page)(struct block_device *, sector_t, struct page *, int op); |
1676 | int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); | 1676 | int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); |
1677 | int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); | 1677 | int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); |
1678 | long (*direct_access)(struct block_device *, sector_t, void **, pfn_t *, | 1678 | long (*direct_access)(struct block_device *, sector_t, void **, pfn_t *, |
diff --git a/include/linux/fs.h b/include/linux/fs.h index f3f0b4c8e8ac..498255e6914e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2480,12 +2480,13 @@ extern void init_special_inode(struct inode *, umode_t, dev_t); | |||
2480 | extern void make_bad_inode(struct inode *); | 2480 | extern void make_bad_inode(struct inode *); |
2481 | extern bool is_bad_inode(struct inode *); | 2481 | extern bool is_bad_inode(struct inode *); |
2482 | 2482 | ||
2483 | #ifdef CONFIG_BLOCK | ||
2484 | static inline bool op_is_write(unsigned int op) | 2483 | static inline bool op_is_write(unsigned int op) |
2485 | { | 2484 | { |
2486 | return op == REQ_OP_READ ? false : true; | 2485 | return op == REQ_OP_READ ? false : true; |
2487 | } | 2486 | } |
2488 | 2487 | ||
2488 | #ifdef CONFIG_BLOCK | ||
2489 | |||
2489 | /* | 2490 | /* |
2490 | * return data direction, READ or WRITE | 2491 | * return data direction, READ or WRITE |
2491 | */ | 2492 | */ |
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 81363b834900..45786374abbd 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
@@ -510,7 +510,7 @@ static inline void wait_on_page_writeback(struct page *page) | |||
510 | extern void end_page_writeback(struct page *page); | 510 | extern void end_page_writeback(struct page *page); |
511 | void wait_for_stable_page(struct page *page); | 511 | void wait_for_stable_page(struct page *page); |
512 | 512 | ||
513 | void page_endio(struct page *page, int rw, int err); | 513 | void page_endio(struct page *page, int op, int err); |
514 | 514 | ||
515 | /* | 515 | /* |
516 | * Add an arbitrary waiter to a page's wait queue | 516 | * Add an arbitrary waiter to a page's wait queue |