btrfs: raid56: simplify code flow in rmw_rbio

Remove the write goto label by moving the data page allocation and data
read into the branch.

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:
Christoph Hellwig
2023-01-11 07:23:26 +01:00
committed by David Sterba
parent abb49e8742
commit 4d7627010b

View File

@ -2300,24 +2300,22 @@ static int rmw_rbio(struct btrfs_raid_bio *rbio)
* Either full stripe write, or we have every data sector already
* cached, can go to write path immediately.
*/
if (rbio_is_full(rbio) || !need_read_stripe_sectors(rbio))
goto write;
if (!rbio_is_full(rbio) && need_read_stripe_sectors(rbio)) {
/*
* Now we're doing sub-stripe write, also need all data stripes
* to do the full RMW.
*/
ret = alloc_rbio_data_pages(rbio);
if (ret < 0)
return ret;
/*
* Now we're doing sub-stripe write, also need all data stripes to do
* the full RMW.
*/
ret = alloc_rbio_data_pages(rbio);
if (ret < 0)
return ret;
index_rbio_pages(rbio);
index_rbio_pages(rbio);
ret = rmw_read_wait_recover(rbio);
if (ret < 0)
return ret;
}
ret = rmw_read_wait_recover(rbio);
if (ret < 0)
return ret;
write:
/*
* At this stage we're not allowed to add any new bios to the
* bio list any more, anyone else that wants to change this stripe