mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
btrfs: raid56: wait for I/O completion in submit_read_bios
In addition to setting up the end_io handler and submitting the bios in submit_read_bios, also wait for them to be completed instead of waiting for the completion manually in all three callers. Rename submit_read_bios to submit_read_wait_bio_list to make it clear it waits for the bios as well. Reviewed-by: Qu Wenruo <wqu@suse.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
4d7627010b
commit
1c76fb7b31
|
|
@ -1497,7 +1497,7 @@ static void raid_wait_read_end_io(struct bio *bio)
|
|||
wake_up(&rbio->io_wait);
|
||||
}
|
||||
|
||||
static void submit_read_bios(struct btrfs_raid_bio *rbio,
|
||||
static void submit_read_wait_bio_list(struct btrfs_raid_bio *rbio,
|
||||
struct bio_list *bio_list)
|
||||
{
|
||||
struct bio *bio;
|
||||
|
|
@ -1514,6 +1514,8 @@ static void submit_read_bios(struct btrfs_raid_bio *rbio,
|
|||
}
|
||||
submit_bio(bio);
|
||||
}
|
||||
|
||||
wait_event(rbio->io_wait, atomic_read(&rbio->stripes_pending) == 0);
|
||||
}
|
||||
|
||||
static int rmw_assemble_read_bios(struct btrfs_raid_bio *rbio,
|
||||
|
|
@ -2016,8 +2018,7 @@ static int recover_rbio(struct btrfs_raid_bio *rbio)
|
|||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
submit_read_bios(rbio, &bio_list);
|
||||
wait_event(rbio->io_wait, atomic_read(&rbio->stripes_pending) == 0);
|
||||
submit_read_wait_bio_list(rbio, &bio_list);
|
||||
|
||||
ret = recover_sectors(rbio);
|
||||
|
||||
|
|
@ -2213,8 +2214,7 @@ static int rmw_read_wait_recover(struct btrfs_raid_bio *rbio)
|
|||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
submit_read_bios(rbio, &bio_list);
|
||||
wait_event(rbio->io_wait, atomic_read(&rbio->stripes_pending) == 0);
|
||||
submit_read_wait_bio_list(rbio, &bio_list);
|
||||
|
||||
/*
|
||||
* We may or may not have any corrupted sectors (including missing dev
|
||||
|
|
@ -2792,8 +2792,7 @@ static int scrub_rbio(struct btrfs_raid_bio *rbio)
|
|||
if (ret < 0)
|
||||
goto cleanup;
|
||||
|
||||
submit_read_bios(rbio, &bio_list);
|
||||
wait_event(rbio->io_wait, atomic_read(&rbio->stripes_pending) == 0);
|
||||
submit_read_wait_bio_list(rbio, &bio_list);
|
||||
|
||||
/* We may have some failures, recover the failed sectors first. */
|
||||
ret = recover_scrub_rbio(rbio);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user