Commit d845636c authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Jim Harris
Browse files

raid5f: use correct iov_len for process requests



Using an iov_len not matching the IO size was causing issues with
bdev_aio.

Fixes: #3620

Change-Id: I26c4ea92bbf97a8266b376dfd1782553fa5e6e73
Signed-off-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@solidigm.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25704


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarMateusz Kozlowski <mateusz.kozlowski@solidigm.com>
parent d4cd02e7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1212,6 +1212,7 @@ raid5f_submit_process_request(struct raid_bdev_process_request *process_req,
	struct raid_bdev_io *raid_io = &process_req->raid_io;
	uint8_t chunk_idx = raid_bdev_base_bdev_slot(process_req->target);
	uint64_t stripe_index = process_req->offset_blocks / r5f_info->stripe_blocks;
	struct iovec *iov;
	int ret;

	assert((process_req->offset_blocks % r5f_info->stripe_blocks) == 0);
@@ -1220,9 +1221,11 @@ raid5f_submit_process_request(struct raid_bdev_process_request *process_req,
		return 0;
	}

	iov = &process_req->iov;
	iov->iov_len = raid_bdev->strip_size * raid_bdev->bdev.blocklen;
	raid_bdev_io_init(raid_io, raid_ch, SPDK_BDEV_IO_TYPE_READ,
			  process_req->offset_blocks, raid_bdev->strip_size,
			  &process_req->iov, 1, process_req->md_buf, NULL, NULL);
			  iov, 1, process_req->md_buf, NULL, NULL);

	ret = raid5f_submit_reconstruct_read(raid_io, stripe_index, chunk_idx, 0,
					     raid5f_process_stripe_request_reconstruct_xor_done);