Lines Matching refs:bdev_io
87 bdev_virtio_blk_init_io_vreq(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) in bdev_virtio_blk_init_io_vreq() argument
93 struct virtio_blk_io_ctx *io_ctx = (struct virtio_blk_io_ctx *)bdev_io->driver_ctx; in bdev_virtio_blk_init_io_vreq()
113 bdev_virtio_blk_send_io(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) in bdev_virtio_blk_send_io() argument
117 struct virtio_blk_io_ctx *io_ctx = (struct virtio_blk_io_ctx *)bdev_io->driver_ctx; in bdev_virtio_blk_send_io()
120 rc = virtqueue_req_start(vq, bdev_io, bdev_io->u.bdev.iovcnt + 2); in bdev_virtio_blk_send_io()
122 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_NOMEM); in bdev_virtio_blk_send_io()
125 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in bdev_virtio_blk_send_io()
130 if (bdev_io->type == SPDK_BDEV_IO_TYPE_UNMAP) { in bdev_virtio_blk_send_io()
133 virtqueue_req_add_iovs(vq, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, in bdev_virtio_blk_send_io()
134 bdev_io->type == SPDK_BDEV_IO_TYPE_READ ? in bdev_virtio_blk_send_io()
143 bdev_virtio_command(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) in bdev_virtio_command() argument
145 struct virtio_blk_io_ctx *io_ctx = bdev_virtio_blk_init_io_vreq(ch, bdev_io); in bdev_virtio_command()
149 if (bdev_io->type == SPDK_BDEV_IO_TYPE_READ) { in bdev_virtio_command()
151 } else if (bdev_io->type == SPDK_BDEV_IO_TYPE_WRITE) { in bdev_virtio_command()
153 } else if (bdev_io->type == SPDK_BDEV_IO_TYPE_UNMAP) { in bdev_virtio_command()
155 desc->sector = bdev_io->u.bdev.offset_blocks * in bdev_virtio_command()
156 spdk_bdev_get_block_size(bdev_io->bdev) / 512; in bdev_virtio_command()
157 desc->num_sectors = bdev_io->u.bdev.num_blocks * in bdev_virtio_command()
158 spdk_bdev_get_block_size(bdev_io->bdev) / 512; in bdev_virtio_command()
162 req->sector = bdev_io->u.bdev.offset_blocks * in bdev_virtio_command()
163 spdk_bdev_get_block_size(bdev_io->bdev) / 512; in bdev_virtio_command()
165 bdev_virtio_blk_send_io(ch, bdev_io); in bdev_virtio_command()
169 bdev_virtio_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io, in bdev_virtio_get_buf_cb() argument
173 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in bdev_virtio_get_buf_cb()
177 bdev_virtio_command(ch, bdev_io); in bdev_virtio_get_buf_cb()
181 _bdev_virtio_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) in _bdev_virtio_submit_request() argument
183 struct virtio_blk_dev *bvdev = bdev_io->bdev->ctxt; in _bdev_virtio_submit_request()
185 switch (bdev_io->type) { in _bdev_virtio_submit_request()
187 spdk_bdev_io_get_buf(bdev_io, bdev_virtio_get_buf_cb, in _bdev_virtio_submit_request()
188 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen); in _bdev_virtio_submit_request()
192 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in _bdev_virtio_submit_request()
194 bdev_virtio_command(ch, bdev_io); in _bdev_virtio_submit_request()
198 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_SUCCESS); in _bdev_virtio_submit_request()
202 bdev_virtio_command(ch, bdev_io); in _bdev_virtio_submit_request()
204 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in _bdev_virtio_submit_request()
216 bdev_virtio_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) in bdev_virtio_submit_request() argument
218 if (_bdev_virtio_submit_request(ch, bdev_io) < 0) { in bdev_virtio_submit_request()
219 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in bdev_virtio_submit_request()
317 bdev_virtio_io_cpl(struct spdk_bdev_io *bdev_io) in bdev_virtio_io_cpl() argument
319 struct virtio_blk_io_ctx *io_ctx = (struct virtio_blk_io_ctx *)bdev_io->driver_ctx; in bdev_virtio_io_cpl()
321 spdk_bdev_io_complete(bdev_io, io_ctx->resp == VIRTIO_BLK_S_OK ? in bdev_virtio_io_cpl()