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

btrfs: raid56: simplify error handling and code flow in raid56_parity_write



Handle the error return on alloc_rbio failure directly instead of using
a goto and remove the queue_rbio goto label by moving the plugged
check into the if branch.

Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarQu Wenruo <wqu@suse.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 79b02ec1
Loading
Loading
Loading
Loading
+15 −22
Original line number Diff line number Diff line
@@ -1667,12 +1667,12 @@ void raid56_parity_write(struct bio *bio, struct btrfs_io_context *bioc)
	struct btrfs_raid_bio *rbio;
	struct btrfs_plug_cb *plug = NULL;
	struct blk_plug_cb *cb;
	int ret = 0;

	rbio = alloc_rbio(fs_info, bioc);
	if (IS_ERR(rbio)) {
		ret = PTR_ERR(rbio);
		goto fail;
		bio->bi_status = errno_to_blk_status(PTR_ERR(rbio));
		bio_endio(bio);
		return;
	}
	rbio->operation = BTRFS_RBIO_WRITE;
	rbio_add_bio(rbio, bio);
@@ -1681,9 +1681,7 @@ void raid56_parity_write(struct bio *bio, struct btrfs_io_context *bioc)
	 * Don't plug on full rbios, just get them out the door
	 * as quickly as we can
	 */
	if (rbio_is_full(rbio))
		goto queue_rbio;

	if (!rbio_is_full(rbio)) {
		cb = blk_check_plugged(raid_unplug, fs_info, sizeof(*plug));
		if (cb) {
			plug = container_of(cb, struct btrfs_plug_cb, cb);
@@ -1694,18 +1692,13 @@ void raid56_parity_write(struct bio *bio, struct btrfs_io_context *bioc)
			list_add_tail(&rbio->plug_list, &plug->rbio_list);
			return;
		}
queue_rbio:
	}

	/*
	 * Either we don't have any existing plug, or we're doing a full stripe,
	 * can queue the rmw work now.
	 * queue the rmw work now.
	 */
	start_async_work(rbio, rmw_rbio_work);

	return;

fail:
	bio->bi_status = errno_to_blk_status(ret);
	bio_endio(bio);
}

static int verify_one_sector(struct btrfs_raid_bio *rbio,