diff options
author | Christoph Hellwig <hch@lst.de> | 2023-01-11 07:23:26 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2023-02-15 19:38:54 +0100 |
commit | 4d7627010bc24f68d617c1c455e12a3dfcffcb2c (patch) | |
tree | afad2c5d3b2a253dd03291f9780426d22c8c2844 | |
parent | abb49e87425be0d573bdafb9a5dbe2c64719796f (diff) | |
download | linux-next-4d7627010bc24f68d617c1c455e12a3dfcffcb2c.tar.gz |
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>
-rw-r--r-- | fs/btrfs/raid56.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c index 8073fa004870..037dae1b7313 100644 --- a/fs/btrfs/raid56.c +++ b/fs/btrfs/raid56.c @@ -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; - - /* - * 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; + 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; - 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 |