Lines Matching defs:bdev_io
89 static void vbdev_passthru_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io);
142 /* Completion callback for IO that were issued from this bdev. The original bdev_io
147 _pt_complete_io(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
165 spdk_bdev_free_io(bdev_io);
169 _pt_complete_zcopy_io(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
186 spdk_bdev_io_set_buf(orig_io, bdev_io->u.bdev.iovs[0].iov_base, bdev_io->u.bdev.iovs[0].iov_len);
188 spdk_bdev_free_io(bdev_io);
194 struct spdk_bdev_io *bdev_io = (struct spdk_bdev_io *)arg;
195 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx;
197 vbdev_passthru_submit_request(io_ctx->ch, bdev_io);
201 vbdev_passthru_queue_io(struct spdk_bdev_io *bdev_io)
203 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx;
207 io_ctx->bdev_io_wait.bdev = bdev_io->bdev;
209 io_ctx->bdev_io_wait.cb_arg = bdev_io;
212 rc = spdk_bdev_queue_io_wait(bdev_io->bdev, pt_ch->base_ch, &io_ctx->bdev_io_wait);
215 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
220 pt_init_ext_io_opts(struct spdk_bdev_io *bdev_io, struct spdk_bdev_ext_io_opts *opts)
224 opts->memory_domain = bdev_io->u.bdev.memory_domain;
225 opts->memory_domain_ctx = bdev_io->u.bdev.memory_domain_ctx;
226 opts->metadata = bdev_io->u.bdev.md_buf;
227 opts->dif_check_flags_exclude_mask = ~bdev_io->u.bdev.dif_check_flags;
236 pt_read_get_buf_cb(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io, bool success)
238 struct vbdev_passthru *pt_node = SPDK_CONTAINEROF(bdev_io->bdev, struct vbdev_passthru,
241 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx;
246 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
250 pt_init_ext_io_opts(bdev_io, &io_opts);
251 rc = spdk_bdev_readv_blocks_ext(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.bdev.iovs,
252 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks,
253 bdev_io->u.bdev.num_blocks, _pt_complete_io,
254 bdev_io, &io_opts);
259 vbdev_passthru_queue_io(bdev_io);
261 SPDK_ERRLOG("ERROR on bdev_io submission!\n");
262 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
269 * below along with the original bdev_io so that we can complete it once this IO completes.
272 vbdev_passthru_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
274 struct vbdev_passthru *pt_node = SPDK_CONTAINEROF(bdev_io->bdev, struct vbdev_passthru, pt_bdev);
276 struct passthru_bdev_io *io_ctx = (struct passthru_bdev_io *)bdev_io->driver_ctx;
286 switch (bdev_io->type) {
288 spdk_bdev_io_get_buf(bdev_io, pt_read_get_buf_cb,
289 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen);
292 pt_init_ext_io_opts(bdev_io, &io_opts);
293 rc = spdk_bdev_writev_blocks_ext(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.bdev.iovs,
294 bdev_io->u.bdev.iovcnt, bdev_io->u.bdev.offset_blocks,
295 bdev_io->u.bdev.num_blocks, _pt_complete_io,
296 bdev_io, &io_opts);
300 bdev_io->u.bdev.offset_blocks,
301 bdev_io->u.bdev.num_blocks,
302 _pt_complete_io, bdev_io);
306 bdev_io->u.bdev.offset_blocks,
307 bdev_io->u.bdev.num_blocks,
308 _pt_complete_io, bdev_io);
312 bdev_io->u.bdev.offset_blocks,
313 bdev_io->u.bdev.num_blocks,
314 _pt_complete_io, bdev_io);
318 _pt_complete_io, bdev_io);
322 bdev_io->u.bdev.offset_blocks,
323 bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.zcopy.populate,
324 _pt_complete_zcopy_io, bdev_io);
327 rc = spdk_bdev_abort(pt_node->base_desc, pt_ch->base_ch, bdev_io->u.abort.bio_to_abort,
328 _pt_complete_io, bdev_io);
332 bdev_io->u.bdev.offset_blocks,
333 bdev_io->u.bdev.copy.src_offset_blocks,
334 bdev_io->u.bdev.num_blocks,
335 _pt_complete_io, bdev_io);
338 SPDK_ERRLOG("passthru: unknown I/O type %d\n", bdev_io->type);
339 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);
346 vbdev_passthru_queue_io(bdev_io);
348 SPDK_ERRLOG("ERROR on bdev_io submission!\n");
349 spdk_bdev_io_complete(bdev_io, SPDK_BDEV_IO_STATUS_FAILED);