Lines Matching refs:bdev

14 #include "spdk/bdev.h"
36 struct spdk_bdev bdev;
68 spdk_json_write_named_string(w, "name", xnvme->bdev.name);
144 num_blocks = bdev_io->u.bdev.num_blocks;
145 offset_blocks = bdev_io->u.bdev.offset_blocks;
147 num_ranges_u64 = spdk_divide_round_up(num_blocks, xnvme->bdev.max_unmap);
148 if (num_ranges_u64 > xnvme->bdev.max_unmap_segments) {
157 assert(bdev_io->u.bdev.iovcnt == 1);
158 range = (struct spdk_nvme_dsm_range *) bdev_io->u.bdev.iovs->iov_base;
161 while (remaining > xnvme->bdev.max_unmap) {
163 range->length = xnvme->bdev.max_unmap;
166 offset += xnvme->bdev.max_unmap;
167 remaining -= xnvme->bdev.max_unmap;
190 struct bdev_xnvme *xnvme = (struct bdev_xnvme *)bdev_io->bdev->ctxt;
196 bdev_io, bdev_io->u.bdev.iovcnt, (struct bdev_xnvme_task *)bdev_io->driver_ctx);
202 ctx->cmd.nvm.nlb = bdev_io->u.bdev.num_blocks - 1;
203 ctx->cmd.nvm.slba = bdev_io->u.bdev.offset_blocks;
208 ctx->cmd.nvm.nlb = bdev_io->u.bdev.num_blocks - 1;
209 ctx->cmd.nvm.slba = bdev_io->u.bdev.offset_blocks;
214 ctx->cmd.nvm.nlb = bdev_io->u.bdev.num_blocks - 1;
215 ctx->cmd.nvm.slba = bdev_io->u.bdev.offset_blocks;
235 err = xnvme_cmd_passv(ctx, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
236 bdev_io->u.bdev.num_blocks * xnvme->bdev.blocklen, NULL, 0, 0);
242 xnvme_ch, bdev_io->u.bdev.iovcnt,
243 bdev_io->u.bdev.num_blocks, bdev_io->u.bdev.offset_blocks);
246 /* Submission failed: queue is full or no memory => Queue the I/O in bdev layer */
250 SPDK_WARNLOG("Start to queue I/O for xnvme bdev\n");
285 * bdev->required_alignment. If user specified unaligned buffers,
290 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen);
322 free(xnvme->bdev.name);
446 xnvme->bdev.name = strdup(name);
447 if (!xnvme->bdev.name) {
451 xnvme->bdev.product_name = "xNVMe bdev";
452 xnvme->bdev.module = &xnvme_if;
454 xnvme->bdev.write_cache = 0;
455 xnvme->bdev.max_write_zeroes = UINT16_MAX + 1;
459 xnvme->bdev.max_unmap = ctrlr->dmrsl ? ctrlr->dmrsl : SPDK_NVME_DATASET_MANAGEMENT_RANGE_MAX_BLOCKS;
460 xnvme->bdev.max_unmap_segments = ctrlr->dmrl ? ctrlr->dmrl :
480 xnvme->bdev.name, bdev_size, block_size);
482 xnvme->bdev.blocklen = block_size;
483 xnvme->bdev.required_alignment = spdk_u32log2(block_size);
485 if (bdev_size % xnvme->bdev.blocklen != 0) {
487 bdev_size, xnvme->bdev.blocklen);
491 xnvme->bdev.blockcnt = bdev_size / xnvme->bdev.blocklen;
492 xnvme->bdev.ctxt = xnvme;
494 xnvme->bdev.fn_table = &xnvme_fn_table;
498 xnvme->bdev.name);
499 rc = spdk_bdev_register(&xnvme->bdev);
507 return &xnvme->bdev;