Linux-NVME Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2 0/1] A few code cleanups
@ 2019-11-26 22:26 Edmund Nadolski
  2019-11-26 22:26 ` [PATCH v2 1/1] nvme: remove unused return code from nvme_alloc_ns Edmund Nadolski
  0 siblings, 1 reply; 3+ messages in thread
From: Edmund Nadolski @ 2019-11-26 22:26 UTC (permalink / raw)
  To: edmund.nadolski, linux-nvme, kbusch

This patchset adds a few simple cleanups to the nvme code.

v2:
 Emit informational message when an error occurs.

Edmund Nadolski (1):
  nvme: remove unused return code from nvme_alloc_ns

 drivers/nvme/host/core.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

-- 
2.20.1

_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v2 1/1] nvme: remove unused return code from nvme_alloc_ns
  2019-11-26 22:26 [PATCH v2 0/1] A few code cleanups Edmund Nadolski
@ 2019-11-26 22:26 ` Edmund Nadolski
  2019-11-27  7:51   ` Christoph Hellwig
  0 siblings, 1 reply; 3+ messages in thread
From: Edmund Nadolski @ 2019-11-26 22:26 UTC (permalink / raw)
  To: edmund.nadolski, linux-nvme, kbusch

The return code of nvme_alloc_ns is never used, so change it
to void. Emit an informative message if an error occurs.

Signed-off-by: Edmund Nadolski <edmund.nadolski@intel.com>
---
 drivers/nvme/host/core.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index e6ee34376c5e..69c407d3d9ba 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -3486,17 +3486,17 @@ static int nvme_setup_streams_ns(struct nvme_ctrl *ctrl, struct nvme_ns *ns)
 	return 0;
 }
 
-static int nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
+static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
 {
 	struct nvme_ns *ns;
 	struct gendisk *disk;
 	struct nvme_id_ns *id;
 	char disk_name[DISK_NAME_LEN];
-	int node = ctrl->numa_node, flags = GENHD_FL_EXT_DEVT, ret;
+	int node = ctrl->numa_node, flags = GENHD_FL_EXT_DEVT, ret = -ENOMEM;
 
 	ns = kzalloc_node(sizeof(*ns), GFP_KERNEL, node);
 	if (!ns)
-		return -ENOMEM;
+		goto out;
 
 	ns->queue = blk_mq_init_queue(ctrl->tagset);
 	if (IS_ERR(ns->queue)) {
@@ -3525,10 +3525,8 @@ static int nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
 	if (ret)
 		goto out_free_queue;
 
-	if (id->ncap == 0) {
-		ret = -EINVAL;
+	if (id->ncap == 0)
 		goto out_free_id;
-	}
 
 	ret = nvme_init_ns_head(ns, nsid, id);
 	if (ret)
@@ -3571,7 +3569,7 @@ static int nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
 	nvme_fault_inject_init(&ns->fault_inject, ns->disk->disk_name);
 	kfree(id);
 
-	return 0;
+	return;
  out_put_disk:
 	put_disk(ns->disk);
  out_unlink_ns:
@@ -3585,9 +3583,9 @@ static int nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
 	blk_cleanup_queue(ns->queue);
  out_free_ns:
 	kfree(ns);
-	if (ret > 0)
-		ret = blk_status_to_errno(nvme_error_status(ret));
-	return ret;
+ out:
+	dev_warn(ctrl->device, "could not allocate %sns.\n",
+		(ret == -ENOMEM) ? "memory for " : "" );
 }
 
 static void nvme_ns_remove(struct nvme_ns *ns)
-- 
2.20.1


_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 1/1] nvme: remove unused return code from nvme_alloc_ns
  2019-11-26 22:26 ` [PATCH v2 1/1] nvme: remove unused return code from nvme_alloc_ns Edmund Nadolski
@ 2019-11-27  7:51   ` Christoph Hellwig
  0 siblings, 0 replies; 3+ messages in thread
From: Christoph Hellwig @ 2019-11-27  7:51 UTC (permalink / raw)
  To: Edmund Nadolski; +Cc: kbusch, linux-nvme

I think this needs some tweaks..

>  	ns = kzalloc_node(sizeof(*ns), GFP_KERNEL, node);
>  	if (!ns)
> -		return -ENOMEM;
> +		goto out;

kmalloc failures already always leave a trace, so we can just return
here.

>  	ns->queue = blk_mq_init_queue(ctrl->tagset);
>  	if (IS_ERR(ns->queue)) {
> @@ -3525,10 +3525,8 @@ static int nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
>  	if (ret)
>  		goto out_free_queue;
>  
> -	if (id->ncap == 0) {
> -		ret = -EINVAL;
> +	if (id->ncap == 0)
>  		goto out_free_id;
> -	}

ncap == 0 means there is no namespace, this is a quirk dating back
to NVMe 1.0 where the driver has to do a sequential scan.  So we don't
need a warning here either.

So looking at this a bit more I'm not even sure we need warning messages
contrary to my previous advice, as the only obvious error that is not
a memory allocation is the command execution in nvme_identify_ns,
and the lightnvm registration which both already log warnings.

_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-26 22:26 [PATCH v2 0/1] A few code cleanups Edmund Nadolski
2019-11-26 22:26 ` [PATCH v2 1/1] nvme: remove unused return code from nvme_alloc_ns Edmund Nadolski
2019-11-27  7:51   ` Christoph Hellwig

Linux-NVME Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-nvme/0 linux-nvme/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-nvme linux-nvme/ https://lore.kernel.org/linux-nvme \
		linux-nvme@lists.infradead.org
	public-inbox-index linux-nvme

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-nvme


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git