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:
committed by
David Sterba
parent
abb49e8742
commit
4d7627010b
@ -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
|
||||
|
Reference in New Issue
Block a user