Lines Matching defs:bdev_io

439 bdev_virtio_init_io_vreq(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
443 struct virtio_scsi_disk *disk = (struct virtio_scsi_disk *)bdev_io->bdev;
444 struct virtio_scsi_io_ctx *io_ctx = (struct virtio_scsi_io_ctx *)bdev_io->driver_ctx;
463 bdev_virtio_init_tmf_vreq(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
467 struct virtio_scsi_disk *disk = SPDK_CONTAINEROF(bdev_io->bdev, struct virtio_scsi_disk, bdev);
468 struct virtio_scsi_io_ctx *io_ctx = (struct virtio_scsi_io_ctx *)bdev_io->driver_ctx;
486 bdev_virtio_send_io(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
490 struct virtio_scsi_io_ctx *io_ctx = (struct virtio_scsi_io_ctx *)bdev_io->driver_ctx;
493 rc = virtqueue_req_start(vq, bdev_io, bdev_io->u.bdev.iovcnt + 2);
495 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_NOMEM);
498 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
503 if (bdev_io->type == SPDK_BDEV_IO_TYPE_READ) {
505 virtqueue_req_add_iovs(vq, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
508 virtqueue_req_add_iovs(vq, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
517 bdev_virtio_rw(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
519 struct virtio_scsi_disk *disk = SPDK_CONTAINEROF(bdev_io->bdev, struct virtio_scsi_disk, bdev);
520 struct virtio_scsi_io_ctx *io_ctx = bdev_virtio_init_io_vreq(ch, bdev_io);
522 bool is_write = bdev_io->type == SPDK_BDEV_IO_TYPE_WRITE;
526 to_be64(&req->cdb[2], bdev_io->u.bdev.offset_blocks);
527 to_be32(&req->cdb[10], bdev_io->u.bdev.num_blocks);
530 to_be32(&req->cdb[2], bdev_io->u.bdev.offset_blocks);
531 to_be16(&req->cdb[7], bdev_io->u.bdev.num_blocks);
534 bdev_virtio_send_io(ch, bdev_io);
538 bdev_virtio_reset(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
541 struct virtio_scsi_io_ctx *io_ctx = bdev_virtio_init_tmf_vreq(ch, bdev_io);
549 enqueued_count = spdk_ring_enqueue(svdev->ctrlq_ring, (void **)&bdev_io, 1, NULL);
553 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_NOMEM);
558 bdev_virtio_unmap(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io, bool success)
560 struct virtio_scsi_io_ctx *io_ctx = bdev_virtio_init_io_vreq(ch, bdev_io);
568 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
572 buf = bdev_io->u.bdev.iovs[0].iov_base;
574 offset_blocks = bdev_io->u.bdev.offset_blocks;
575 num_blocks = bdev_io->u.bdev.num_blocks;
604 bdev_virtio_send_io(ch, bdev_io);
608 bdev_virtio_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io,
612 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
616 bdev_virtio_rw(ch, bdev_io);
620 _bdev_virtio_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
622 struct virtio_scsi_disk *disk = SPDK_CONTAINEROF(bdev_io->bdev, struct virtio_scsi_disk, bdev);
624 switch (bdev_io->type) {
626 spdk_bdev_io_get_buf(bdev_io, bdev_virtio_get_buf_cb,
627 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen);
630 bdev_virtio_rw(ch, bdev_io);
633 bdev_virtio_reset(ch, bdev_io);
637 (bdev_io->u.bdev.num_blocks + UINT32_MAX - 1) /
646 bdev_io->u.bdev.num_blocks);
649 spdk_bdev_io_get_buf(bdev_io, bdev_virtio_unmap, buf_len);
660 bdev_virtio_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
662 if (_bdev_virtio_submit_request(ch, bdev_io) < 0) {
663 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
766 bdev_virtio_io_cpl(struct spdk_bdev_io *bdev_io)
768 struct virtio_scsi_io_ctx *io_ctx = (struct virtio_scsi_io_ctx *)bdev_io->driver_ctx;
772 spdk_bdev_io_complete_scsi_status(bdev_io, io_ctx->resp.status, sk, asc, ascq);
838 struct spdk_bdev_io *bdev_io = ctx;
839 struct virtio_scsi_io_ctx *io_ctx = (struct virtio_scsi_io_ctx *)bdev_io->driver_ctx;
842 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_SUCCESS);
844 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
849 bdev_virtio_tmf_cpl(struct spdk_bdev_io *bdev_io)
851 spdk_thread_send_msg(spdk_bdev_io_get_thread(bdev_io), bdev_virtio_tmf_cpl_cb, bdev_io);
899 struct spdk_bdev_io *bdev_io = ctx;
901 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_NOMEM);
907 struct spdk_bdev_io *bdev_io = ctx;
909 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
913 bdev_virtio_tmf_abort(struct spdk_bdev_io *bdev_io, int status)
923 spdk_thread_send_msg(spdk_bdev_io_get_thread(bdev_io), fn, bdev_io);
927 bdev_virtio_send_tmf_io(struct virtqueue *ctrlq, struct spdk_bdev_io *bdev_io)
929 struct virtio_scsi_io_ctx *io_ctx = (struct virtio_scsi_io_ctx *)bdev_io->driver_ctx;
932 rc = virtqueue_req_start(ctrlq, bdev_io, 2);