Commit 4d762701 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David Sterba
Browse files

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: default avatarQu Wenruo <wqu@suse.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent abb49e87
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -2300,12 +2300,10 @@ 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.
		 * 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)
@@ -2316,8 +2314,8 @@ static int rmw_rbio(struct btrfs_raid_bio *rbio)
		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