int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, int node, const struct attribute_group *attrs) { struct request_queue *q = ns->queue; struct nvm_dev *dev; int ret; dev = nvm_alloc_dev(node); if (!dev) return -ENOMEM; dev->q = q; memcpy(dev->name, disk_name, DISK_NAME_LEN); dev->ops = &nvme_nvm_dev_ops; dev->parent_dev = ns->ctrl->device; dev->private_data = ns; ns->ndev = dev; ret = nvm_register(dev); ns->lba_shift = ilog2(dev->sec_size) - 9; if (sysfs_create_group(&dev->dev.kobj, attrs)) pr_warn("%s: failed to create sysfs group for identification\n", disk_name); return ret; }
int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, int node) { struct request_queue *q = ns->queue; struct nvm_dev *dev; _nvme_nvm_check_size(); dev = nvm_alloc_dev(node); if (!dev) return -ENOMEM; dev->q = q; memcpy(dev->name, disk_name, DISK_NAME_LEN); dev->ops = &nvme_nvm_dev_ops; dev->private_data = ns; ns->ndev = dev; return nvm_register(dev); }
static int null_nvm_register(struct nullb *nullb) { struct nvm_dev *dev; int rv; dev = nvm_alloc_dev(0); if (!dev) return -ENOMEM; dev->q = nullb->q; memcpy(dev->name, nullb->disk_name, DISK_NAME_LEN); dev->ops = &null_lnvm_dev_ops; rv = nvm_register(dev); if (rv) { kfree(dev); return rv; } nullb->ndev = dev; return 0; }