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>
This commit is contained in:

committed by
Jens Axboe

parent
af8c34ce6a
commit
4e49ea4a3d
@@ -1673,6 +1673,7 @@ static int btrfsic_read_block(struct btrfsic_state *state,
|
||||
}
|
||||
bio->bi_bdev = block_ctx->dev->bdev;
|
||||
bio->bi_iter.bi_sector = dev_bytenr >> 9;
|
||||
bio->bi_rw = READ;
|
||||
|
||||
for (j = i; j < num_pages; j++) {
|
||||
ret = bio_add_page(bio, block_ctx->pagev[j],
|
||||
@@ -1685,7 +1686,7 @@ static int btrfsic_read_block(struct btrfsic_state *state,
|
||||
"btrfsic: error, failed to add a single page!\n");
|
||||
return -1;
|
||||
}
|
||||
if (submit_bio_wait(READ, bio)) {
|
||||
if (submit_bio_wait(bio)) {
|
||||
printk(KERN_INFO
|
||||
"btrfsic: read error at logical %llu dev %s!\n",
|
||||
block_ctx->start, block_ctx->dev->name);
|
||||
@@ -2918,9 +2919,10 @@ int btrfsic_submit_bh(int rw, struct buffer_head *bh)
|
||||
return submit_bh(rw, bh);
|
||||
}
|
||||
|
||||
static void __btrfsic_submit_bio(int rw, struct bio *bio)
|
||||
static void __btrfsic_submit_bio(struct bio *bio)
|
||||
{
|
||||
struct btrfsic_dev_state *dev_state;
|
||||
int rw = bio->bi_rw;
|
||||
|
||||
if (!btrfsic_is_initialized)
|
||||
return;
|
||||
@@ -3016,16 +3018,16 @@ leave:
|
||||
mutex_unlock(&btrfsic_mutex);
|
||||
}
|
||||
|
||||
void btrfsic_submit_bio(int rw, struct bio *bio)
|
||||
void btrfsic_submit_bio(struct bio *bio)
|
||||
{
|
||||
__btrfsic_submit_bio(rw, bio);
|
||||
submit_bio(rw, bio);
|
||||
__btrfsic_submit_bio(bio);
|
||||
submit_bio(bio);
|
||||
}
|
||||
|
||||
int btrfsic_submit_bio_wait(int rw, struct bio *bio)
|
||||
int btrfsic_submit_bio_wait(struct bio *bio)
|
||||
{
|
||||
__btrfsic_submit_bio(rw, bio);
|
||||
return submit_bio_wait(rw, bio);
|
||||
__btrfsic_submit_bio(bio);
|
||||
return submit_bio_wait(bio);
|
||||
}
|
||||
|
||||
int btrfsic_mount(struct btrfs_root *root,
|
||||
|
@@ -21,8 +21,8 @@
|
||||
|
||||
#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
|
||||
int btrfsic_submit_bh(int rw, struct buffer_head *bh);
|
||||
void btrfsic_submit_bio(int rw, struct bio *bio);
|
||||
int btrfsic_submit_bio_wait(int rw, struct bio *bio);
|
||||
void btrfsic_submit_bio(struct bio *bio);
|
||||
int btrfsic_submit_bio_wait(struct bio *bio);
|
||||
#else
|
||||
#define btrfsic_submit_bh submit_bh
|
||||
#define btrfsic_submit_bio submit_bio
|
||||
|
@@ -3486,12 +3486,13 @@ static int write_dev_flush(struct btrfs_device *device, int wait)
|
||||
|
||||
bio->bi_end_io = btrfs_end_empty_barrier;
|
||||
bio->bi_bdev = device->bdev;
|
||||
bio->bi_rw = WRITE_FLUSH;
|
||||
init_completion(&device->flush_wait);
|
||||
bio->bi_private = &device->flush_wait;
|
||||
device->flush_bio = bio;
|
||||
|
||||
bio_get(bio);
|
||||
btrfsic_submit_bio(WRITE_FLUSH, bio);
|
||||
btrfsic_submit_bio(bio);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -2049,9 +2049,10 @@ int repair_io_failure(struct inode *inode, u64 start, u64 length, u64 logical,
|
||||
return -EIO;
|
||||
}
|
||||
bio->bi_bdev = dev->bdev;
|
||||
bio->bi_rw = WRITE_SYNC;
|
||||
bio_add_page(bio, page, length, pg_offset);
|
||||
|
||||
if (btrfsic_submit_bio_wait(WRITE_SYNC, bio)) {
|
||||
if (btrfsic_submit_bio_wait(bio)) {
|
||||
/* try to remap that extent elsewhere? */
|
||||
btrfs_bio_counter_dec(fs_info);
|
||||
bio_put(bio);
|
||||
@@ -2735,14 +2736,14 @@ static int __must_check submit_one_bio(int rw, struct bio *bio,
|
||||
start = page_offset(page) + bvec->bv_offset;
|
||||
|
||||
bio->bi_private = NULL;
|
||||
|
||||
bio->bi_rw = rw;
|
||||
bio_get(bio);
|
||||
|
||||
if (tree->ops && tree->ops->submit_bio_hook)
|
||||
ret = tree->ops->submit_bio_hook(page->mapping->host, rw, bio,
|
||||
mirror_num, bio_flags, start);
|
||||
else
|
||||
btrfsic_submit_bio(rw, bio);
|
||||
btrfsic_submit_bio(bio);
|
||||
|
||||
bio_put(bio);
|
||||
return ret;
|
||||
|
@@ -1320,7 +1320,9 @@ write_data:
|
||||
|
||||
bio->bi_private = rbio;
|
||||
bio->bi_end_io = raid_write_end_io;
|
||||
submit_bio(WRITE, bio);
|
||||
bio->bi_rw = WRITE;
|
||||
|
||||
submit_bio(bio);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -1573,11 +1575,12 @@ static int raid56_rmw_stripe(struct btrfs_raid_bio *rbio)
|
||||
|
||||
bio->bi_private = rbio;
|
||||
bio->bi_end_io = raid_rmw_end_io;
|
||||
bio->bi_rw = READ;
|
||||
|
||||
btrfs_bio_wq_end_io(rbio->fs_info, bio,
|
||||
BTRFS_WQ_ENDIO_RAID56);
|
||||
|
||||
submit_bio(READ, bio);
|
||||
submit_bio(bio);
|
||||
}
|
||||
/* the actual write will happen once the reads are done */
|
||||
return 0;
|
||||
@@ -2097,11 +2100,12 @@ static int __raid56_parity_recover(struct btrfs_raid_bio *rbio)
|
||||
|
||||
bio->bi_private = rbio;
|
||||
bio->bi_end_io = raid_recover_end_io;
|
||||
bio->bi_rw = READ;
|
||||
|
||||
btrfs_bio_wq_end_io(rbio->fs_info, bio,
|
||||
BTRFS_WQ_ENDIO_RAID56);
|
||||
|
||||
submit_bio(READ, bio);
|
||||
submit_bio(bio);
|
||||
}
|
||||
out:
|
||||
return 0;
|
||||
@@ -2433,7 +2437,9 @@ submit_write:
|
||||
|
||||
bio->bi_private = rbio;
|
||||
bio->bi_end_io = raid_write_end_io;
|
||||
submit_bio(WRITE, bio);
|
||||
bio->bi_rw = WRITE;
|
||||
|
||||
submit_bio(bio);
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -2610,11 +2616,12 @@ static void raid56_parity_scrub_stripe(struct btrfs_raid_bio *rbio)
|
||||
|
||||
bio->bi_private = rbio;
|
||||
bio->bi_end_io = raid56_parity_scrub_end_io;
|
||||
bio->bi_rw = READ;
|
||||
|
||||
btrfs_bio_wq_end_io(rbio->fs_info, bio,
|
||||
BTRFS_WQ_ENDIO_RAID56);
|
||||
|
||||
submit_bio(READ, bio);
|
||||
submit_bio(bio);
|
||||
}
|
||||
/* the actual write will happen once the reads are done */
|
||||
return;
|
||||
|
@@ -1504,8 +1504,9 @@ static void scrub_recheck_block(struct btrfs_fs_info *fs_info,
|
||||
sblock->no_io_error_seen = 0;
|
||||
} else {
|
||||
bio->bi_iter.bi_sector = page->physical >> 9;
|
||||
bio->bi_rw = READ;
|
||||
|
||||
if (btrfsic_submit_bio_wait(READ, bio))
|
||||
if (btrfsic_submit_bio_wait(bio))
|
||||
sblock->no_io_error_seen = 0;
|
||||
}
|
||||
|
||||
@@ -1583,6 +1584,7 @@ static int scrub_repair_page_from_good_copy(struct scrub_block *sblock_bad,
|
||||
return -EIO;
|
||||
bio->bi_bdev = page_bad->dev->bdev;
|
||||
bio->bi_iter.bi_sector = page_bad->physical >> 9;
|
||||
bio->bi_rw = WRITE;
|
||||
|
||||
ret = bio_add_page(bio, page_good->page, PAGE_SIZE, 0);
|
||||
if (PAGE_SIZE != ret) {
|
||||
@@ -1590,7 +1592,7 @@ static int scrub_repair_page_from_good_copy(struct scrub_block *sblock_bad,
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (btrfsic_submit_bio_wait(WRITE, bio)) {
|
||||
if (btrfsic_submit_bio_wait(bio)) {
|
||||
btrfs_dev_stat_inc_and_print(page_bad->dev,
|
||||
BTRFS_DEV_STAT_WRITE_ERRS);
|
||||
btrfs_dev_replace_stats_inc(
|
||||
@@ -1684,6 +1686,7 @@ again:
|
||||
bio->bi_end_io = scrub_wr_bio_end_io;
|
||||
bio->bi_bdev = sbio->dev->bdev;
|
||||
bio->bi_iter.bi_sector = sbio->physical >> 9;
|
||||
bio->bi_rw = WRITE;
|
||||
sbio->err = 0;
|
||||
} else if (sbio->physical + sbio->page_count * PAGE_SIZE !=
|
||||
spage->physical_for_dev_replace ||
|
||||
@@ -1731,7 +1734,7 @@ static void scrub_wr_submit(struct scrub_ctx *sctx)
|
||||
* orders the requests before sending them to the driver which
|
||||
* doubled the write performance on spinning disks when measured
|
||||
* with Linux 3.5 */
|
||||
btrfsic_submit_bio(WRITE, sbio->bio);
|
||||
btrfsic_submit_bio(sbio->bio);
|
||||
}
|
||||
|
||||
static void scrub_wr_bio_end_io(struct bio *bio)
|
||||
@@ -2041,7 +2044,7 @@ static void scrub_submit(struct scrub_ctx *sctx)
|
||||
sbio = sctx->bios[sctx->curr];
|
||||
sctx->curr = -1;
|
||||
scrub_pending_bio_inc(sctx);
|
||||
btrfsic_submit_bio(READ, sbio->bio);
|
||||
btrfsic_submit_bio(sbio->bio);
|
||||
}
|
||||
|
||||
static int scrub_add_page_to_rd_bio(struct scrub_ctx *sctx,
|
||||
@@ -2088,6 +2091,7 @@ again:
|
||||
bio->bi_end_io = scrub_bio_end_io;
|
||||
bio->bi_bdev = sbio->dev->bdev;
|
||||
bio->bi_iter.bi_sector = sbio->physical >> 9;
|
||||
bio->bi_rw = READ;
|
||||
sbio->err = 0;
|
||||
} else if (sbio->physical + sbio->page_count * PAGE_SIZE !=
|
||||
spage->physical ||
|
||||
@@ -4436,6 +4440,7 @@ static int write_page_nocow(struct scrub_ctx *sctx,
|
||||
bio->bi_iter.bi_size = 0;
|
||||
bio->bi_iter.bi_sector = physical_for_dev_replace >> 9;
|
||||
bio->bi_bdev = dev->bdev;
|
||||
bio->bi_rw = WRITE_SYNC;
|
||||
ret = bio_add_page(bio, page, PAGE_SIZE, 0);
|
||||
if (ret != PAGE_SIZE) {
|
||||
leave_with_eio:
|
||||
@@ -4444,7 +4449,7 @@ leave_with_eio:
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (btrfsic_submit_bio_wait(WRITE_SYNC, bio))
|
||||
if (btrfsic_submit_bio_wait(bio))
|
||||
goto leave_with_eio;
|
||||
|
||||
bio_put(bio);
|
||||
|
@@ -462,7 +462,7 @@ loop_lock:
|
||||
sync_pending = 0;
|
||||
}
|
||||
|
||||
btrfsic_submit_bio(cur->bi_rw, cur);
|
||||
btrfsic_submit_bio(cur);
|
||||
num_run++;
|
||||
batch_run++;
|
||||
|
||||
@@ -5996,7 +5996,7 @@ static void btrfs_end_bio(struct bio *bio)
|
||||
*/
|
||||
static noinline void btrfs_schedule_bio(struct btrfs_root *root,
|
||||
struct btrfs_device *device,
|
||||
int rw, struct bio *bio)
|
||||
struct bio *bio)
|
||||
{
|
||||
int should_queue = 1;
|
||||
struct btrfs_pending_bios *pending_bios;
|
||||
@@ -6007,9 +6007,9 @@ static noinline void btrfs_schedule_bio(struct btrfs_root *root,
|
||||
}
|
||||
|
||||
/* don't bother with additional async steps for reads, right now */
|
||||
if (!(rw & REQ_WRITE)) {
|
||||
if (!(bio->bi_rw & REQ_WRITE)) {
|
||||
bio_get(bio);
|
||||
btrfsic_submit_bio(rw, bio);
|
||||
btrfsic_submit_bio(bio);
|
||||
bio_put(bio);
|
||||
return;
|
||||
}
|
||||
@@ -6023,7 +6023,6 @@ static noinline void btrfs_schedule_bio(struct btrfs_root *root,
|
||||
atomic_inc(&root->fs_info->nr_async_bios);
|
||||
WARN_ON(bio->bi_next);
|
||||
bio->bi_next = NULL;
|
||||
bio->bi_rw |= rw;
|
||||
|
||||
spin_lock(&device->io_lock);
|
||||
if (bio->bi_rw & REQ_SYNC)
|
||||
@@ -6057,6 +6056,7 @@ static void submit_stripe_bio(struct btrfs_root *root, struct btrfs_bio *bbio,
|
||||
btrfs_io_bio(bio)->stripe_index = dev_nr;
|
||||
bio->bi_end_io = btrfs_end_bio;
|
||||
bio->bi_iter.bi_sector = physical >> 9;
|
||||
bio->bi_rw |= rw;
|
||||
#ifdef DEBUG
|
||||
{
|
||||
struct rcu_string *name;
|
||||
@@ -6075,9 +6075,9 @@ static void submit_stripe_bio(struct btrfs_root *root, struct btrfs_bio *bbio,
|
||||
btrfs_bio_counter_inc_noblocked(root->fs_info);
|
||||
|
||||
if (async)
|
||||
btrfs_schedule_bio(root, dev, rw, bio);
|
||||
btrfs_schedule_bio(root, dev, bio);
|
||||
else
|
||||
btrfsic_submit_bio(rw, bio);
|
||||
btrfsic_submit_bio(bio);
|
||||
}
|
||||
|
||||
static void bbio_error(struct btrfs_bio *bbio, struct bio *bio, u64 logical)
|
||||
|
Reference in New Issue
Block a user