Commit f5b9a51d authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

nvme: factor out nvme_ns_open and nvme_ns_release helpers



These will be reused for the per-namespace character devices.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
Reviewed-by: default avatarJavier González <javier.gonz@samsung.com>
Reviewed-by: default avatarChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
parent 1496bd49
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -1483,9 +1483,8 @@ void nvme_put_ns_from_disk(struct nvme_ns_head *head, int idx)
		srcu_read_unlock(&head->srcu, idx);
}

static int nvme_open(struct block_device *bdev, fmode_t mode)
static int nvme_ns_open(struct nvme_ns *ns)
{
	struct nvme_ns *ns = bdev->bd_disk->private_data;

	/* should never be called due to GENHD_FL_HIDDEN */
	if (WARN_ON_ONCE(nvme_ns_head_multipath(ns->head)))
@@ -1503,14 +1502,23 @@ static int nvme_open(struct block_device *bdev, fmode_t mode)
	return -ENXIO;
}

static void nvme_release(struct gendisk *disk, fmode_t mode)
static void nvme_ns_release(struct nvme_ns *ns)
{
	struct nvme_ns *ns = disk->private_data;

	module_put(ns->ctrl->ops->module);
	nvme_put_ns(ns);
}

static int nvme_open(struct block_device *bdev, fmode_t mode)
{
	return nvme_ns_open(bdev->bd_disk->private_data);
}

static void nvme_release(struct gendisk *disk, fmode_t mode)
{
	nvme_ns_release(disk->private_data);
}

int nvme_getgeo(struct block_device *bdev, struct hd_geometry *geo)
{
	/* some standard values */