aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-lib.c
diff options
context:
space:
mode:
authorMike Christie <mchristi@redhat.com>2016-06-05 15:31:41 -0400
committerJens Axboe <axboe@fb.com>2016-06-07 15:41:38 -0400
commit4e49ea4a3d276365bf7396c9b77b4d1d5923835a (patch)
treea49531413109137c3a6e40f02db7eb7969b2b672 /block/blk-lib.c
parentaf8c34ce6ae32addda3788d54a7e340cad22516b (diff)
block/fs/drivers: remove rw argument from submit_bio
This has callers of submit_bio/submit_bio_wait set the bio->bi_rw instead of passing it in. This makes that use the same as generic_make_request and how we set the other bio fields. Signed-off-by: Mike Christie <mchristi@redhat.com> Fixed up fs/ext4/crypto.c Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-lib.c')
-rw-r--r--block/blk-lib.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/block/blk-lib.c b/block/blk-lib.c
index 23d7f301a196..1f6dec5e0975 100644
--- a/block/blk-lib.c
+++ b/block/blk-lib.c
@@ -9,14 +9,14 @@
9 9
10#include "blk.h" 10#include "blk.h"
11 11
12static struct bio *next_bio(struct bio *bio, int rw, unsigned int nr_pages, 12static struct bio *next_bio(struct bio *bio, unsigned int nr_pages,
13 gfp_t gfp) 13 gfp_t gfp)
14{ 14{
15 struct bio *new = bio_alloc(gfp, nr_pages); 15 struct bio *new = bio_alloc(gfp, nr_pages);
16 16
17 if (bio) { 17 if (bio) {
18 bio_chain(bio, new); 18 bio_chain(bio, new);
19 submit_bio(rw, bio); 19 submit_bio(bio);
20 } 20 }
21 21
22 return new; 22 return new;
@@ -62,9 +62,10 @@ int __blkdev_issue_discard(struct block_device *bdev, sector_t sector,
62 req_sects = end_sect - sector; 62 req_sects = end_sect - sector;
63 } 63 }
64 64
65 bio = next_bio(bio, type, 1, gfp_mask); 65 bio = next_bio(bio, 1, gfp_mask);
66 bio->bi_iter.bi_sector = sector; 66 bio->bi_iter.bi_sector = sector;
67 bio->bi_bdev = bdev; 67 bio->bi_bdev = bdev;
68 bio->bi_rw = type;
68 69
69 bio->bi_iter.bi_size = req_sects << 9; 70 bio->bi_iter.bi_size = req_sects << 9;
70 nr_sects -= req_sects; 71 nr_sects -= req_sects;
@@ -110,7 +111,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
110 ret = __blkdev_issue_discard(bdev, sector, nr_sects, gfp_mask, type, 111 ret = __blkdev_issue_discard(bdev, sector, nr_sects, gfp_mask, type,
111 &bio); 112 &bio);
112 if (!ret && bio) { 113 if (!ret && bio) {
113 ret = submit_bio_wait(type, bio); 114 ret = submit_bio_wait(bio);
114 if (ret == -EOPNOTSUPP) 115 if (ret == -EOPNOTSUPP)
115 ret = 0; 116 ret = 0;
116 } 117 }
@@ -147,13 +148,14 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
147 max_write_same_sectors = UINT_MAX >> 9; 148 max_write_same_sectors = UINT_MAX >> 9;
148 149
149 while (nr_sects) { 150 while (nr_sects) {
150 bio = next_bio(bio, REQ_WRITE | REQ_WRITE_SAME, 1, gfp_mask); 151 bio = next_bio(bio, 1, gfp_mask);
151 bio->bi_iter.bi_sector = sector; 152 bio->bi_iter.bi_sector = sector;
152 bio->bi_bdev = bdev; 153 bio->bi_bdev = bdev;
153 bio->bi_vcnt = 1; 154 bio->bi_vcnt = 1;
154 bio->bi_io_vec->bv_page = page; 155 bio->bi_io_vec->bv_page = page;
155 bio->bi_io_vec->bv_offset = 0; 156 bio->bi_io_vec->bv_offset = 0;
156 bio->bi_io_vec->bv_len = bdev_logical_block_size(bdev); 157 bio->bi_io_vec->bv_len = bdev_logical_block_size(bdev);
158 bio->bi_rw = REQ_WRITE | REQ_WRITE_SAME;
157 159
158 if (nr_sects > max_write_same_sectors) { 160 if (nr_sects > max_write_same_sectors) {
159 bio->bi_iter.bi_size = max_write_same_sectors << 9; 161 bio->bi_iter.bi_size = max_write_same_sectors << 9;
@@ -166,7 +168,7 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
166 } 168 }
167 169
168 if (bio) 170 if (bio)
169 ret = submit_bio_wait(REQ_WRITE | REQ_WRITE_SAME, bio); 171 ret = submit_bio_wait(bio);
170 return ret != -EOPNOTSUPP ? ret : 0; 172 return ret != -EOPNOTSUPP ? ret : 0;
171} 173}
172EXPORT_SYMBOL(blkdev_issue_write_same); 174EXPORT_SYMBOL(blkdev_issue_write_same);
@@ -190,11 +192,11 @@ static int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
190 unsigned int sz; 192 unsigned int sz;
191 193
192 while (nr_sects != 0) { 194 while (nr_sects != 0) {
193 bio = next_bio(bio, WRITE, 195 bio = next_bio(bio, min(nr_sects, (sector_t)BIO_MAX_PAGES),
194 min(nr_sects, (sector_t)BIO_MAX_PAGES),
195 gfp_mask); 196 gfp_mask);
196 bio->bi_iter.bi_sector = sector; 197 bio->bi_iter.bi_sector = sector;
197 bio->bi_bdev = bdev; 198 bio->bi_bdev = bdev;
199 bio->bi_rw = REQ_WRITE;
198 200
199 while (nr_sects != 0) { 201 while (nr_sects != 0) {
200 sz = min((sector_t) PAGE_SIZE >> 9 , nr_sects); 202 sz = min((sector_t) PAGE_SIZE >> 9 , nr_sects);
@@ -207,7 +209,7 @@ static int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
207 } 209 }
208 210
209 if (bio) 211 if (bio)
210 return submit_bio_wait(WRITE, bio); 212 return submit_bio_wait(bio);
211 return 0; 213 return 0;
212} 214}
213 215