Lines Matching refs:bdev_io
85 static void vbdev_passthru_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io);
143 _pt_complete_io(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg) in _pt_complete_io() argument
161 spdk_bdev_free_io(bdev_io); in _pt_complete_io()
165 _pt_complete_zcopy_io(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg) in _pt_complete_zcopy_io() argument
182 spdk_bdev_io_set_buf(orig_io, bdev_io->u.bdev.iovs[0].iov_base, bdev_io->u.bdev.iovs[0].iov_len); in _pt_complete_zcopy_io()
184 spdk_bdev_free_io(bdev_io); in _pt_complete_zcopy_io()
190 struct spdk_bdev_io *bdev_io = (struct spdk_bdev_io *)arg; in vbdev_passthru_resubmit_io() local
191 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx; in vbdev_passthru_resubmit_io()
193 vbdev_passthru_submit_request(io_ctx->ch, bdev_io); in vbdev_passthru_resubmit_io()
197 vbdev_passthru_queue_io(struct spdk_bdev_io *bdev_io) in vbdev_passthru_queue_io() argument
199 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx; in vbdev_passthru_queue_io()
203 io_ctx->bdev_io_wait.bdev = bdev_io->bdev; in vbdev_passthru_queue_io()
205 io_ctx->bdev_io_wait.cb_arg = bdev_io; in vbdev_passthru_queue_io()
208 rc = spdk_bdev_queue_io_wait(bdev_io->bdev, pt_ch->base_ch, &io_ctx->bdev_io_wait); in vbdev_passthru_queue_io()
211 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in vbdev_passthru_queue_io()
221 pt_read_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io, bool success) in pt_read_get_buf_cb() argument
223 struct vbdev_passthru *pt_node = SPDK_CONTAINEROF(bdev_io->bdev, struct vbdev_passthru, in pt_read_get_buf_cb()
226 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx; in pt_read_get_buf_cb()
230 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in pt_read_get_buf_cb()
234 if (bdev_io->u.bdev.md_buf == NULL) { in pt_read_get_buf_cb()
235 rc = spdk_bdev_readv_blocks(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.bdev.iovs, in pt_read_get_buf_cb()
236 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks, in pt_read_get_buf_cb()
237 bdev_io->u.bdev.num_blocks, _pt_complete_io, in pt_read_get_buf_cb()
238 bdev_io); in pt_read_get_buf_cb()
241 bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, in pt_read_get_buf_cb()
242 bdev_io->u.bdev.md_buf, in pt_read_get_buf_cb()
243 bdev_io->u.bdev.offset_blocks, in pt_read_get_buf_cb()
244 bdev_io->u.bdev.num_blocks, in pt_read_get_buf_cb()
245 _pt_complete_io, bdev_io); in pt_read_get_buf_cb()
252 vbdev_passthru_queue_io(bdev_io); in pt_read_get_buf_cb()
255 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in pt_read_get_buf_cb()
265 vbdev_passthru_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) in vbdev_passthru_submit_request() argument
267 struct vbdev_passthru *pt_node = SPDK_CONTAINEROF(bdev_io->bdev, struct vbdev_passthru, pt_bdev); in vbdev_passthru_submit_request()
269 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx; in vbdev_passthru_submit_request()
278 switch (bdev_io->type) { in vbdev_passthru_submit_request()
280 spdk_bdev_io_get_buf(bdev_io, pt_read_get_buf_cb, in vbdev_passthru_submit_request()
281 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen); in vbdev_passthru_submit_request()
284 if (bdev_io->u.bdev.md_buf == NULL) { in vbdev_passthru_submit_request()
285 rc = spdk_bdev_writev_blocks(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.bdev.iovs, in vbdev_passthru_submit_request()
286 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks, in vbdev_passthru_submit_request()
287 bdev_io->u.bdev.num_blocks, _pt_complete_io, in vbdev_passthru_submit_request()
288 bdev_io); in vbdev_passthru_submit_request()
291 bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, in vbdev_passthru_submit_request()
292 bdev_io->u.bdev.md_buf, in vbdev_passthru_submit_request()
293 bdev_io->u.bdev.offset_blocks, in vbdev_passthru_submit_request()
294 bdev_io->u.bdev.num_blocks, in vbdev_passthru_submit_request()
295 _pt_complete_io, bdev_io); in vbdev_passthru_submit_request()
300 bdev_io->u.bdev.offset_blocks, in vbdev_passthru_submit_request()
301 bdev_io->u.bdev.num_blocks, in vbdev_passthru_submit_request()
302 _pt_complete_io, bdev_io); in vbdev_passthru_submit_request()
306 bdev_io->u.bdev.offset_blocks, in vbdev_passthru_submit_request()
307 bdev_io->u.bdev.num_blocks, in vbdev_passthru_submit_request()
308 _pt_complete_io, bdev_io); in vbdev_passthru_submit_request()
312 bdev_io->u.bdev.offset_blocks, in vbdev_passthru_submit_request()
313 bdev_io->u.bdev.num_blocks, in vbdev_passthru_submit_request()
314 _pt_complete_io, bdev_io); in vbdev_passthru_submit_request()
318 _pt_complete_io, bdev_io); in vbdev_passthru_submit_request()
321 rc = spdk_bdev_zcopy_start(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.bdev.iovs, in vbdev_passthru_submit_request()
322 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks, in vbdev_passthru_submit_request()
323 bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.zcopy.populate, in vbdev_passthru_submit_request()
324 _pt_complete_zcopy_io, bdev_io); in vbdev_passthru_submit_request()
327 rc = spdk_bdev_abort(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.abort.bio_to_abort, in vbdev_passthru_submit_request()
328 _pt_complete_io, bdev_io); in vbdev_passthru_submit_request()
331 SPDK_ERRLOG("passthru: unknown I/O type %d\n", bdev_io->type); in vbdev_passthru_submit_request()
332 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in vbdev_passthru_submit_request()
339 vbdev_passthru_queue_io(bdev_io); in vbdev_passthru_submit_request()
342 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED); in vbdev_passthru_submit_request()