Lines Matching refs:raid_io

42 raid1_init_ext_io_opts(struct spdk_bdev_ext_io_opts *opts, struct raid_bdev_io *raid_io)
46 opts->memory_domain = raid_io->memory_domain;
47 opts->memory_domain_ctx = raid_io->memory_domain_ctx;
48 opts->metadata = raid_io->md_buf;
54 struct raid_bdev_io *raid_io = cb_arg;
59 base_info = raid_bdev_channel_get_base_info(raid_io->raid_ch, bdev_io->bdev);
67 raid_bdev_io_complete_part(raid_io, 1, success ?
73 raid1_get_read_io_base_bdev(struct raid_bdev_io *raid_io)
75 assert(raid_io->type == SPDK_BDEV_IO_TYPE_READ);
76 return &raid_io->raid_bdev->base_bdev_info[raid_io->base_bdev_io_submitted];
82 struct raid_bdev_io *raid_io = cb_arg;
87 struct raid_base_bdev_info *base_info = raid1_get_read_io_base_bdev(raid_io);
90 * but complete the raid_io successfully. */
94 raid_bdev_io_complete(raid_io, SPDK_BDEV_IO_STATUS_SUCCESS);
100 struct raid_bdev_io *raid_io = _raid_io;
101 struct raid_bdev *raid_bdev = raid_io->raid_bdev;
108 i = raid_io->base_bdev_io_submitted;
110 base_ch = raid_bdev_channel_get_base_channel(raid_io->raid_ch, i);
113 raid1_init_ext_io_opts(&io_opts, raid_io);
114 ret = raid_bdev_writev_blocks_ext(base_info, base_ch, raid_io->iovs, raid_io->iovcnt,
115 raid_io->offset_blocks, raid_io->num_blocks,
116 raid1_correct_read_error_completion, raid_io, &io_opts);
119 raid_bdev_queue_io_wait(raid_io, spdk_bdev_desc_get_bdev(base_info->desc),
123 raid_bdev_io_complete(raid_io, SPDK_BDEV_IO_STATUS_SUCCESS);
133 struct raid_bdev_io *raid_io = cb_arg;
138 assert(raid_io->base_bdev_io_remaining > 0);
139 raid_io->base_bdev_io_remaining--;
140 raid1_read_other_base_bdev(raid_io);
145 raid1_correct_read_error(raid_io);
151 struct raid_bdev_io *raid_io = _raid_io;
152 struct raid_bdev *raid_bdev = raid_io->raid_bdev;
159 for (i = raid_bdev->num_base_bdevs - raid_io->base_bdev_io_remaining; i < raid_bdev->num_base_bdevs;
162 base_ch = raid_bdev_channel_get_base_channel(raid_io->raid_ch, i);
164 if (base_ch == NULL || i == raid_io->base_bdev_io_submitted) {
165 raid_io->base_bdev_io_remaining--;
169 raid1_init_ext_io_opts(&io_opts, raid_io);
170 ret = raid_bdev_readv_blocks_ext(base_info, base_ch, raid_io->iovs, raid_io->iovcnt,
171 raid_io->offset_blocks, raid_io->num_blocks,
172 raid1_read_other_completion, raid_io, &io_opts);
175 raid_bdev_queue_io_wait(raid_io, spdk_bdev_desc_get_bdev(base_info->desc),
184 base_info = raid1_get_read_io_base_bdev(raid_io);
187 raid_bdev_io_complete(raid_io, SPDK_BDEV_IO_STATUS_FAILED);
193 struct raid_bdev_io *raid_io = cb_arg;
197 raid1_channel_dec_read_counters(raid_io->raid_ch, raid_io->base_bdev_io_submitted,
198 raid_io->num_blocks);
201 raid_io->base_bdev_io_remaining = raid_io->raid_bdev->num_base_bdevs;
202 raid1_read_other_base_bdev(raid_io);
206 raid_bdev_io_complete(raid_io, SPDK_BDEV_IO_STATUS_SUCCESS);
209 static void raid1_submit_rw_request(struct raid_bdev_io *raid_io);
214 struct raid_bdev_io *raid_io = _raid_io;
216 raid1_submit_rw_request(raid_io);
239 raid1_submit_read_request(struct raid_bdev_io *raid_io)
241 struct raid_bdev *raid_bdev = raid_io->raid_bdev;
242 struct raid_bdev_io_channel *raid_ch = raid_io->raid_ch;
251 raid_bdev_io_complete(raid_io, SPDK_BDEV_IO_STATUS_FAILED);
258 raid1_init_ext_io_opts(&io_opts, raid_io);
259 ret = raid_bdev_readv_blocks_ext(base_info, base_ch, raid_io->iovs, raid_io->iovcnt,
260 raid_io->offset_blocks, raid_io->num_blocks,
261 raid1_read_bdev_io_completion, raid_io, &io_opts);
264 raid1_channel_inc_read_counters(raid_ch, idx, raid_io->num_blocks);
265 raid_io->base_bdev_io_submitted = idx;
267 raid_bdev_queue_io_wait(raid_io, spdk_bdev_desc_get_bdev(base_info->desc),
276 raid1_submit_write_request(struct raid_bdev_io *raid_io)
278 struct raid_bdev *raid_bdev = raid_io->raid_bdev;
286 if (raid_io->base_bdev_io_submitted == 0) {
287 raid_io->base_bdev_io_remaining = raid_bdev->num_base_bdevs;
288 raid_bdev_io_set_default_status(raid_io, SPDK_BDEV_IO_STATUS_FAILED);
291 raid1_init_ext_io_opts(&io_opts, raid_io);
292 for (idx = raid_io->base_bdev_io_submitted; idx < raid_bdev->num_base_bdevs; idx++) {
294 base_ch = raid_bdev_channel_get_base_channel(raid_io->raid_ch, idx);
298 raid_io->base_bdev_io_submitted++;
299 raid_bdev_io_complete_part(raid_io, 1, SPDK_BDEV_IO_STATUS_FAILED);
303 ret = raid_bdev_writev_blocks_ext(base_info, base_ch, raid_io->iovs, raid_io->iovcnt,
304 raid_io->offset_blocks, raid_io->num_blocks,
305 raid1_write_bdev_io_completion, raid_io, &io_opts);
308 raid_bdev_queue_io_wait(raid_io, spdk_bdev_desc_get_bdev(base_info->desc),
314 raid_io->base_bdev_io_submitted;
315 raid_bdev_io_complete_part(raid_io, base_bdev_io_not_submitted,
320 raid_io->base_bdev_io_submitted++;
323 if (raid_io->base_bdev_io_submitted == 0) {
331 raid1_submit_rw_request(struct raid_bdev_io *raid_io)
335 switch (raid_io->type) {
337 ret = raid1_submit_read_request(raid_io);
340 ret = raid1_submit_write_request(raid_io);
348 raid_bdev_io_complete(raid_io, SPDK_BDEV_IO_STATUS_FAILED);
448 struct raid_bdev_io *raid_io = &process_req->raid_io;
452 raid1_init_ext_io_opts(&io_opts, raid_io);
454 raid_io->iovs, raid_io->iovcnt,
455 raid_io->offset_blocks, raid_io->num_blocks,
459 raid_bdev_queue_io_wait(raid_io, spdk_bdev_desc_get_bdev(process_req->target->desc),
468 raid1_process_read_completed(struct raid_bdev_io *raid_io, enum spdk_bdev_io_status status)
470 struct raid_bdev_process_request *process_req = SPDK_CONTAINEROF(raid_io,
471 struct raid_bdev_process_request, raid_io);
485 struct raid_bdev_io *raid_io = &process_req->raid_io;
488 raid_bdev_io_init(raid_io, raid_ch, SPDK_BDEV_IO_TYPE_READ,
491 raid_io->completion_cb = raid1_process_read_completed;
493 ret = raid1_submit_read_request(raid_io);