Lines Matching defs:bdev_io
94 static void vbdev_delay_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io);
185 /* Completion callback for IO that were issued from this bdev. The original bdev_io
190 _delay_complete_io(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
199 if (bdev_io->type == SPDK_BDEV_IO_TYPE_ZCOPY && bdev_io->u.bdev.zcopy.start && success) {
200 io_ctx->zcopy_bdev_io = bdev_io;
202 assert(io_ctx->zcopy_bdev_io == NULL || io_ctx->zcopy_bdev_io == bdev_io);
204 spdk_bdev_free_io(bdev_io);
235 struct spdk_bdev_io *bdev_io = (struct spdk_bdev_io *)arg;
236 struct delay_bdev_io *io_ctx = (struct delay_bdev_io *)bdev_io->driver_ctx;
238 vbdev_delay_submit_request(io_ctx->ch, bdev_io);
242 vbdev_delay_queue_io(struct spdk_bdev_io *bdev_io)
244 struct delay_bdev_io *io_ctx = (struct delay_bdev_io *)bdev_io->driver_ctx;
248 io_ctx->bdev_io_wait.bdev = bdev_io->bdev;
250 io_ctx->bdev_io_wait.cb_arg = bdev_io;
252 rc = spdk_bdev_queue_io_wait(bdev_io->bdev, delay_ch->base_ch, &io_ctx->bdev_io_wait);
255 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
260 delay_init_ext_io_opts(struct spdk_bdev_io *bdev_io, struct spdk_bdev_ext_io_opts *opts)
264 opts->memory_domain = bdev_io->u.bdev.memory_domain;
265 opts->memory_domain_ctx = bdev_io->u.bdev.memory_domain_ctx;
266 opts->metadata = bdev_io->u.bdev.md_buf;
270 delay_read_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io, bool success)
272 struct vbdev_delay *delay_node = SPDK_CONTAINEROF(bdev_io->bdev, struct vbdev_delay,
279 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
283 delay_init_ext_io_opts(bdev_io, &io_opts);
284 rc = spdk_bdev_readv_blocks_ext(delay_node->base_desc, delay_ch->base_ch, bdev_io->u.bdev.iovs,
285 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks,
286 bdev_io->u.bdev.num_blocks, _delay_complete_io,
287 bdev_io, &io_opts);
291 vbdev_delay_queue_io(bdev_io);
293 SPDK_ERRLOG("ERROR on bdev_io submission!\n");
294 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
301 struct spdk_bdev_io *bdev_io = spdk_io_channel_iter_get_ctx(i);
302 struct delay_bdev_io *io_ctx = (struct delay_bdev_io *)bdev_io->driver_ctx;
308 _delay_complete_io, bdev_io);
312 vbdev_delay_queue_io(bdev_io);
314 SPDK_ERRLOG("ERROR on bdev_io submission!\n");
315 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
320 abort_zcopy_io(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
322 spdk_bdev_free_io(bdev_io);
377 struct spdk_bdev_io *bdev_io)
379 struct spdk_bdev_io *bio_to_abort = bdev_io->u.abort.bio_to_abort;
385 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_SUCCESS);
390 _delay_complete_io, bdev_io);
394 vbdev_delay_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
396 struct vbdev_delay *delay_node = SPDK_CONTAINEROF(bdev_io->bdev, struct vbdev_delay, delay_bdev);
398 struct delay_bdev_io *io_ctx = (struct delay_bdev_io *)bdev_io->driver_ctx;
407 if (bdev_io->type != SPDK_BDEV_IO_TYPE_ZCOPY || bdev_io->u.bdev.zcopy.start) {
411 switch (bdev_io->type) {
414 spdk_bdev_io_get_buf(bdev_io, delay_read_get_buf_cb,
415 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen);
419 delay_init_ext_io_opts(bdev_io, &io_opts);
420 rc = spdk_bdev_writev_blocks_ext(delay_node->base_desc, delay_ch->base_ch, bdev_io->u.bdev.iovs,
421 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks,
422 bdev_io->u.bdev.num_blocks, _delay_complete_io,
423 bdev_io, &io_opts);
427 bdev_io->u.bdev.offset_blocks,
428 bdev_io->u.bdev.num_blocks,
429 _delay_complete_io, bdev_io);
433 bdev_io->u.bdev.offset_blocks,
434 bdev_io->u.bdev.num_blocks,
435 _delay_complete_io, bdev_io);
439 bdev_io->u.bdev.offset_blocks,
440 bdev_io->u.bdev.num_blocks,
441 _delay_complete_io, bdev_io);
447 spdk_for_each_channel(delay_node, vbdev_delay_reset_channel, bdev_io,
451 rc = vbdev_delay_abort(delay_node, delay_ch, bdev_io);
454 if (bdev_io->u.bdev.zcopy.commit) {
456 } else if (bdev_io->u.bdev.zcopy.populate) {
459 if (bdev_io->u.bdev.zcopy.start) {
461 bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
462 bdev_io->u.bdev.offset_blocks,
463 bdev_io->u.bdev.num_blocks,
464 bdev_io->u.bdev.zcopy.populate,
465 _delay_complete_io, bdev_io);
467 rc = spdk_bdev_zcopy_end(io_ctx->zcopy_bdev_io, bdev_io->u.bdev.zcopy.commit,
468 _delay_complete_io, bdev_io);
472 SPDK_ERRLOG("delay: unknown I/O type %d\n", bdev_io->type);
473 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
479 vbdev_delay_queue_io(bdev_io);
481 SPDK_ERRLOG("ERROR on bdev_io submission!\n");
482 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);