Lines Matching defs:bdev_io
40 _malloc_verify_pi(struct spdk_bdev_io *bdev_io, struct iovec *iovs, int iovcnt,
43 struct spdk_bdev *bdev = bdev_io->bdev;
49 assert(bdev_io->u.bdev.memory_domain == NULL);
58 bdev_io->u.bdev.dif_check_flags,
59 bdev_io->u.bdev.offset_blocks & 0xFFFFFFFF,
69 bdev_io->u.bdev.num_blocks,
75 .iov_len = bdev_io->u.bdev.num_blocks * bdev->md_len,
78 if (bdev_io->u.bdev.md_buf == NULL) {
85 bdev_io->u.bdev.num_blocks,
93 bdev_io->u.bdev.offset_blocks,
94 bdev_io->u.bdev.num_blocks,
105 malloc_verify_pi_io_buf(struct spdk_bdev_io *bdev_io)
107 return _malloc_verify_pi(bdev_io,
108 bdev_io->u.bdev.iovs,
109 bdev_io->u.bdev.iovcnt,
110 bdev_io->u.bdev.md_buf);
114 malloc_verify_pi_malloc_buf(struct spdk_bdev_io *bdev_io)
117 struct spdk_bdev *bdev = bdev_io->bdev;
121 len = bdev_io->u.bdev.num_blocks * bdev->blocklen;
122 offset = bdev_io->u.bdev.offset_blocks * bdev->blocklen;
127 return _malloc_verify_pi(bdev_io, &iov, 1, NULL);
131 malloc_unmap_write_zeroes_generate_pi(struct spdk_bdev_io *bdev_io)
133 struct spdk_bdev *bdev = bdev_io->bdev;
134 struct malloc_disk *mdisk = bdev_io->bdev->ctxt;
135 uint32_t block_size = bdev_io->bdev->blocklen;
162 .iov_base = mdisk->malloc_buf + bdev_io->u.bdev.offset_blocks * block_size,
163 .iov_len = bdev_io->u.bdev.num_blocks * block_size,
166 rc = spdk_dif_generate(&iov, 1, bdev_io->u.bdev.num_blocks, &dif_ctx);
169 .iov_base = mdisk->malloc_buf + bdev_io->u.bdev.offset_blocks * block_size,
170 .iov_len = bdev_io->u.bdev.num_blocks * block_size,
174 .iov_base = mdisk->malloc_md_buf + bdev_io->u.bdev.offset_blocks * bdev->md_len,
175 .iov_len = bdev_io->u.bdev.num_blocks * bdev->md_len,
178 rc = spdk_dix_generate(&iov, 1, &md_iov, bdev_io->u.bdev.num_blocks, &dif_ctx);
193 struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(task);
210 if (bdev_io->bdev->dif_type != SPDK_DIF_DISABLE &&
212 switch (bdev_io->type) {
214 if (!spdk_bdev_io_hide_metadata(bdev_io)) {
215 rc = malloc_verify_pi_io_buf(bdev_io);
221 if (!spdk_bdev_io_hide_metadata(bdev_io)) {
224 rc = malloc_verify_pi_malloc_buf(bdev_io);
229 rc = malloc_unmap_write_zeroes_generate_pi(bdev_io);
241 assert(!bdev_io->u.bdev.accel_sequence || task->status == SPDK_BDEV_IO_STATUS_NOMEM);
316 malloc_get_md_len(struct spdk_bdev_io *bdev_io)
318 return bdev_io->u.bdev.num_blocks * bdev_io->bdev->md_len;
322 malloc_get_md_offset(struct spdk_bdev_io *bdev_io)
324 return bdev_io->u.bdev.offset_blocks * bdev_io->bdev->md_len;
328 malloc_get_md_buf(struct spdk_bdev_io *bdev_io)
330 struct malloc_disk *mdisk = SPDK_CONTAINEROF(bdev_io->bdev, struct malloc_disk, disk);
332 assert(spdk_bdev_is_md_separate(bdev_io->bdev));
334 return (char *)mdisk->malloc_md_buf + malloc_get_md_offset(bdev_io);
340 struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(task);
344 spdk_accel_sequence_abort(bdev_io->u.bdev.accel_sequence);
345 bdev_io->u.bdev.accel_sequence = NULL;
355 struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(task);
357 bdev_io->u.bdev.accel_sequence = NULL;
364 struct malloc_task *task, struct spdk_bdev_io *bdev_io)
369 len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen;
370 offset = bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen;
372 if (bdev_malloc_check_iov_len(bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, len)) {
384 len, offset, bdev_io->u.bdev.iovcnt);
387 res = spdk_accel_append_copy(&bdev_io->u.bdev.accel_sequence, ch,
388 bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
389 bdev_io->u.bdev.memory_domain,
390 bdev_io->u.bdev.memory_domain_ctx,
397 spdk_accel_sequence_reverse(bdev_io->u.bdev.accel_sequence);
398 spdk_accel_sequence_finish(bdev_io->u.bdev.accel_sequence, malloc_sequence_done, task);
400 if (bdev_io->u.bdev.md_buf == NULL) {
405 malloc_get_md_len(bdev_io), malloc_get_md_offset(bdev_io));
408 res = spdk_accel_submit_copy(ch, bdev_io->u.bdev.md_buf, malloc_get_md_buf(bdev_io),
409 malloc_get_md_len(bdev_io), malloc_done, task);
417 struct malloc_task *task, struct spdk_bdev_io *bdev_io)
422 len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen;
423 offset = bdev_io->u.bdev.offset_blocks * bdev_io->bdev->blocklen;
425 if (bdev_malloc_check_iov_len(bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, len)) {
437 len, offset, bdev_io->u.bdev.iovcnt);
440 res = spdk_accel_append_copy(&bdev_io->u.bdev.accel_sequence, ch, &task->iov, 1, NULL, NULL,
441 bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
442 bdev_io->u.bdev.memory_domain,
443 bdev_io->u.bdev.memory_domain_ctx, NULL, NULL);
449 spdk_accel_sequence_finish(bdev_io->u.bdev.accel_sequence, malloc_sequence_done, task);
451 if (bdev_io->u.bdev.md_buf == NULL) {
456 malloc_get_md_len(bdev_io), malloc_get_md_offset(bdev_io));
459 res = spdk_accel_submit_copy(ch, malloc_get_md_buf(bdev_io), bdev_io->u.bdev.md_buf,
460 malloc_get_md_len(bdev_io), malloc_done, task);
502 _bdev_malloc_submit_request(struct malloc_channel *mch, struct spdk_bdev_io *bdev_io)
504 struct malloc_task *task = (struct malloc_task *)bdev_io->driver_ctx;
505 struct malloc_disk *disk = bdev_io->bdev->ctxt;
506 uint32_t block_size = bdev_io->bdev->blocklen;
509 switch (bdev_io->type) {
511 if (bdev_io->u.bdev.iovs[0].iov_base == NULL) {
512 assert(bdev_io->u.bdev.iovcnt == 1);
513 assert(bdev_io->u.bdev.memory_domain == NULL);
514 bdev_io->u.bdev.iovs[0].iov_base =
515 disk->malloc_buf + bdev_io->u.bdev.offset_blocks * block_size;
516 bdev_io->u.bdev.iovs[0].iov_len = bdev_io->u.bdev.num_blocks * block_size;
517 if (spdk_bdev_is_md_separate(bdev_io->bdev)) {
518 spdk_bdev_io_set_md_buf(bdev_io, malloc_get_md_buf(bdev_io),
519 malloc_get_md_len(bdev_io));
525 if (bdev_io->bdev->dif_type != SPDK_DIF_DISABLE &&
526 spdk_bdev_io_hide_metadata(bdev_io)) {
527 rc = malloc_verify_pi_malloc_buf(bdev_io);
534 bdev_malloc_readv(disk, mch->accel_channel, task, bdev_io);
538 if (bdev_io->bdev->dif_type != SPDK_DIF_DISABLE &&
539 !spdk_bdev_io_hide_metadata(bdev_io)) {
540 rc = malloc_verify_pi_io_buf(bdev_io);
547 bdev_malloc_writev(disk, mch->accel_channel, task, bdev_io);
560 bdev_io->u.bdev.offset_blocks * block_size,
561 bdev_io->u.bdev.num_blocks * block_size);
566 bdev_io->u.bdev.offset_blocks * block_size,
567 bdev_io->u.bdev.num_blocks * block_size);
570 if (bdev_io->u.bdev.zcopy.start) {
574 buf = disk->malloc_buf + bdev_io->u.bdev.offset_blocks * block_size;
575 len = bdev_io->u.bdev.num_blocks * block_size;
576 spdk_bdev_io_set_buf(bdev_io, buf, len);
577 if (spdk_bdev_is_md_separate(bdev_io->bdev)) {
578 spdk_bdev_io_set_md_buf(bdev_io, malloc_get_md_buf(bdev_io),
579 malloc_get_md_len(bdev_io));
589 bdev_io->u.bdev.offset_blocks * block_size,
590 bdev_io->u.bdev.copy.src_offset_blocks * block_size,
591 bdev_io->u.bdev.num_blocks * block_size);
601 bdev_malloc_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io)
605 if (_bdev_malloc_submit_request(mch, bdev_io) != 0) {
606 malloc_complete_task((struct malloc_task *)bdev_io->driver_ctx, mch,