]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
btrfs: raid56: simplify code flow in rmw_rbio
authorChristoph Hellwig <hch@lst.de>
Wed, 11 Jan 2023 06:23:26 +0000 (07:23 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 15 Feb 2023 18:38:54 +0000 (19:38 +0100)
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>
fs/btrfs/raid56.c

index 8073fa004870b6e0f98e355c205f82f18c9c3b48..037dae1b7313b7d98a1698e67c3288f04e0c0379 100644 (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;
-
-       /*
-        * 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