Lines Matching refs:ns

59 static int		nvme_ns_split_bio(struct nvme_namespace *ns,
67 struct nvme_namespace *ns;
71 ns = cdev->si_drv1;
72 ctrlr = ns->ctrlr;
77 nvme_ns_test(ns, cmd, arg);
81 return (nvme_ctrlr_passthrough_cmd(ctrlr, pt, ns->id,
84 *(off_t *)arg = (off_t)nvme_ns_get_size(ns);
87 *(u_int *)arg = nvme_ns_get_sector_size(ns);
138 struct nvme_namespace *ns;
141 ns = bp->bio_dev->si_drv1;
142 err = nvme_ns_bio_process(ns, bp, nvme_ns_strategy_done);
165 nvme_ns_get_max_io_xfer_size(struct nvme_namespace *ns)
167 return ns->ctrlr->max_xfer_size;
171 nvme_ns_get_sector_size(struct nvme_namespace *ns)
173 return (1 << ns->data.lbaf[ns->data.flbas.format].lbads);
177 nvme_ns_get_num_sectors(struct nvme_namespace *ns)
179 return (ns->data.nsze);
183 nvme_ns_get_size(struct nvme_namespace *ns)
185 return (nvme_ns_get_num_sectors(ns) * nvme_ns_get_sector_size(ns));
189 nvme_ns_get_flags(struct nvme_namespace *ns)
191 return (ns->flags);
195 nvme_ns_get_serial_number(struct nvme_namespace *ns)
197 return ((const char *)ns->ctrlr->cdata.sn);
201 nvme_ns_get_model_number(struct nvme_namespace *ns)
203 return ((const char *)ns->ctrlr->cdata.mn);
207 nvme_ns_get_data(struct nvme_namespace *ns)
210 return (&ns->data);
394 nvme_ns_split_bio(struct nvme_namespace *ns, struct bio *bp,
407 err = nvme_ns_bio_process(ns, child, nvme_bio_child_done);
419 nvme_ns_bio_process(struct nvme_namespace *ns, struct bio *bp,
428 if (ns->stripesize > 0 &&
431 bp->bio_bcount, ns->stripesize);
433 return (nvme_ns_split_bio(ns, bp, ns->stripesize));
438 err = nvme_ns_cmd_read_bio(ns, bp, nvme_ns_bio_done, bp);
441 err = nvme_ns_cmd_write_bio(ns, bp, nvme_ns_bio_done, bp);
444 err = nvme_ns_cmd_flush(ns, nvme_ns_bio_done, bp);
451 bp->bio_bcount/nvme_ns_get_sector_size(ns);
453 bp->bio_offset/nvme_ns_get_sector_size(ns);
455 err = nvme_ns_cmd_deallocate(ns, dsm_range, 1,
470 nvme_ns_populate_chatham_data(struct nvme_namespace *ns)
475 ctrlr = ns->ctrlr;
476 nsdata = &ns->data;
491 nvme_ns_construct(struct nvme_namespace *ns, uint16_t id,
497 ns->ctrlr = ctrlr;
498 ns->id = id;
499 ns->stripesize = 0;
502 ns->stripesize =
513 if (!mtx_initialized(&ns->lock))
514 mtx_init(&ns->lock, "nvme ns lock", NULL, MTX_DEF);
518 nvme_ns_populate_chatham_data(ns);
522 nvme_ctrlr_cmd_identify_namespace(ctrlr, id, &ns->data,
538 if (ns->data.flbas.format > ns->data.nlbaf) {
540 ns->data.flbas.format, ns->data.nlbaf+1);
545 ns->flags |= NVME_NS_DEALLOCATE_SUPPORTED;
548 ns->flags |= NVME_NS_FLUSH_SUPPORTED;
554 if (ns->cdev != NULL)
561 unit = device_get_unit(ctrlr->dev) * NVME_MAX_NAMESPACES + ns->id - 1;
570 ns->cdev = make_dev_credf(MAKEDEV_ETERNAL_KLD, &nvme_ns_cdevsw, unit,
572 device_get_unit(ctrlr->dev), ns->id);
574 ns->cdev = make_dev_credf(0, &nvme_ns_cdevsw, unit,
576 device_get_unit(ctrlr->dev), ns->id);
579 ns->cdev->si_flags |= SI_UNMAPPED;
582 if (ns->cdev != NULL)
583 ns->cdev->si_drv1 = ns;
588 void nvme_ns_destruct(struct nvme_namespace *ns)
591 if (ns->cdev != NULL)
592 destroy_dev(ns->cdev);