linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] lightnvm: minor updates for lightnvm core
@ 2019-07-27 18:26 Minwoo Im
  2019-07-27 18:26 ` [PATCH 1/2] lightnvm: introduce pr_fmt for the prefix nvm Minwoo Im
  2019-07-27 18:26 ` [PATCH 2/2] lightnvm: print error when target is not found Minwoo Im
  0 siblings, 2 replies; 4+ messages in thread
From: Minwoo Im @ 2019-07-27 18:26 UTC (permalink / raw)
  To: linux-block, linux-kernel; +Cc: Klaus Birkelund, Minwoo Im

Hi Matias,

These are a minor patches for the lightnvm core module.  The first patch
has been reviewed by Chaitanya and Javier(tag also).  The second one is
just printing out the error which indicates the given target is not
found from the list.

Please consider this patches.

Thanks.

Minwoo Im (2):
  lightnvm: introduce pr_fmt for the prefix nvm
  lightnvm: print error when target is not found

 drivers/lightnvm/core.c | 53 ++++++++++++++++++++++-------------------
 1 file changed, 28 insertions(+), 25 deletions(-)

-- 
2.17.1


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

* [PATCH 1/2] lightnvm: introduce pr_fmt for the prefix nvm
  2019-07-27 18:26 [PATCH 0/2] lightnvm: minor updates for lightnvm core Minwoo Im
@ 2019-07-27 18:26 ` Minwoo Im
  2019-08-11 19:43   ` Matias Bjørling
  2019-07-27 18:26 ` [PATCH 2/2] lightnvm: print error when target is not found Minwoo Im
  1 sibling, 1 reply; 4+ messages in thread
From: Minwoo Im @ 2019-07-27 18:26 UTC (permalink / raw)
  To: linux-block, linux-kernel
  Cc: Klaus Birkelund, Minwoo Im, Matias Bjørling,
	Javier González, Chaitanya Kulkarni

all the pr_() family can have this prefix by pr_fmt.

Changes to V2:
  - Fix typo in title (s/previx/prefix)

Changes to V1:
  - Squashed multiple lines to make it short (Chaitanya)

Cc: Matias Bjørling <mb@lightnvm.io>
Cc: Javier González <javier@javigon.com>
Cc: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Reviewed-by: Javier González <javier@javigon.com>
---
 drivers/lightnvm/core.c | 48 ++++++++++++++++++++---------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index a600934fdd9c..4c7b48f72e80 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -4,6 +4,7 @@
  * Initial release: Matias Bjorling <m@bjorling.me>
  */
 
+#define pr_fmt(fmt) "nvm: " fmt
 #include <linux/list.h>
 #include <linux/types.h>
 #include <linux/sem.h>
@@ -74,7 +75,7 @@ static int nvm_reserve_luns(struct nvm_dev *dev, int lun_begin, int lun_end)
 
 	for (i = lun_begin; i <= lun_end; i++) {
 		if (test_and_set_bit(i, dev->lun_map)) {
-			pr_err("nvm: lun %d already allocated\n", i);
+			pr_err("lun %d already allocated\n", i);
 			goto err;
 		}
 	}
@@ -264,7 +265,7 @@ static int nvm_config_check_luns(struct nvm_geo *geo, int lun_begin,
 				 int lun_end)
 {
 	if (lun_begin > lun_end || lun_end >= geo->all_luns) {
-		pr_err("nvm: lun out of bound (%u:%u > %u)\n",
+		pr_err("lun out of bound (%u:%u > %u)\n",
 			lun_begin, lun_end, geo->all_luns - 1);
 		return -EINVAL;
 	}
@@ -297,7 +298,7 @@ static int __nvm_config_extended(struct nvm_dev *dev,
 	if (e->op == 0xFFFF) {
 		e->op = NVM_TARGET_DEFAULT_OP;
 	} else if (e->op < NVM_TARGET_MIN_OP || e->op > NVM_TARGET_MAX_OP) {
-		pr_err("nvm: invalid over provisioning value\n");
+		pr_err("invalid over provisioning value\n");
 		return -EINVAL;
 	}
 
@@ -334,23 +335,23 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create)
 		e = create->conf.e;
 		break;
 	default:
-		pr_err("nvm: config type not valid\n");
+		pr_err("config type not valid\n");
 		return -EINVAL;
 	}
 
 	tt = nvm_find_target_type(create->tgttype);
 	if (!tt) {
-		pr_err("nvm: target type %s not found\n", create->tgttype);
+		pr_err("target type %s not found\n", create->tgttype);
 		return -EINVAL;
 	}
 
 	if ((tt->flags & NVM_TGT_F_HOST_L2P) != (dev->geo.dom & NVM_RSP_L2P)) {
-		pr_err("nvm: device is incompatible with target L2P type.\n");
+		pr_err("device is incompatible with target L2P type.\n");
 		return -EINVAL;
 	}
 
 	if (nvm_target_exists(create->tgtname)) {
-		pr_err("nvm: target name already exists (%s)\n",
+		pr_err("target name already exists (%s)\n",
 							create->tgtname);
 		return -EINVAL;
 	}
@@ -367,7 +368,7 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create)
 
 	tgt_dev = nvm_create_tgt_dev(dev, e.lun_begin, e.lun_end, e.op);
 	if (!tgt_dev) {
-		pr_err("nvm: could not create target device\n");
+		pr_err("could not create target device\n");
 		ret = -ENOMEM;
 		goto err_t;
 	}
@@ -686,7 +687,7 @@ static int nvm_set_rqd_ppalist(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd,
 	rqd->nr_ppas = nr_ppas;
 	rqd->ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, &rqd->dma_ppa_list);
 	if (!rqd->ppa_list) {
-		pr_err("nvm: failed to allocate dma memory\n");
+		pr_err("failed to allocate dma memory\n");
 		return -ENOMEM;
 	}
 
@@ -1048,7 +1049,7 @@ int nvm_set_chunk_meta(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *ppas,
 		return 0;
 
 	if (nr_ppas > NVM_MAX_VLBA) {
-		pr_err("nvm: unable to update all blocks atomically\n");
+		pr_err("unable to update all blocks atomically\n");
 		return -EINVAL;
 	}
 
@@ -1111,27 +1112,26 @@ static int nvm_init(struct nvm_dev *dev)
 	int ret = -EINVAL;
 
 	if (dev->ops->identity(dev)) {
-		pr_err("nvm: device could not be identified\n");
+		pr_err("device could not be identified\n");
 		goto err;
 	}
 
-	pr_debug("nvm: ver:%u.%u nvm_vendor:%x\n",
-				geo->major_ver_id, geo->minor_ver_id,
-				geo->vmnt);
+	pr_debug("ver:%u.%u nvm_vendor:%x\n", geo->major_ver_id,
+			geo->minor_ver_id, geo->vmnt);
 
 	ret = nvm_core_init(dev);
 	if (ret) {
-		pr_err("nvm: could not initialize core structures.\n");
+		pr_err("could not initialize core structures.\n");
 		goto err;
 	}
 
-	pr_info("nvm: registered %s [%u/%u/%u/%u/%u]\n",
+	pr_info("registered %s [%u/%u/%u/%u/%u]\n",
 			dev->name, dev->geo.ws_min, dev->geo.ws_opt,
 			dev->geo.num_chk, dev->geo.all_luns,
 			dev->geo.num_ch);
 	return 0;
 err:
-	pr_err("nvm: failed to initialize nvm\n");
+	pr_err("failed to initialize nvm\n");
 	return ret;
 }
 
@@ -1169,7 +1169,7 @@ int nvm_register(struct nvm_dev *dev)
 	dev->dma_pool = dev->ops->create_dma_pool(dev, "ppalist",
 						  exp_pool_size);
 	if (!dev->dma_pool) {
-		pr_err("nvm: could not create dma pool\n");
+		pr_err("could not create dma pool\n");
 		kref_put(&dev->ref, nvm_free);
 		return -ENOMEM;
 	}
@@ -1214,7 +1214,7 @@ static int __nvm_configure_create(struct nvm_ioctl_create *create)
 	up_write(&nvm_lock);
 
 	if (!dev) {
-		pr_err("nvm: device not found\n");
+		pr_err("device not found\n");
 		return -EINVAL;
 	}
 
@@ -1288,7 +1288,7 @@ static long nvm_ioctl_get_devices(struct file *file, void __user *arg)
 		i++;
 
 		if (i > 31) {
-			pr_err("nvm: max 31 devices can be reported.\n");
+			pr_err("max 31 devices can be reported.\n");
 			break;
 		}
 	}
@@ -1315,7 +1315,7 @@ static long nvm_ioctl_dev_create(struct file *file, void __user *arg)
 
 	if (create.conf.type == NVM_CONFIG_TYPE_EXTENDED &&
 	    create.conf.e.rsv != 0) {
-		pr_err("nvm: reserved config field in use\n");
+		pr_err("reserved config field in use\n");
 		return -EINVAL;
 	}
 
@@ -1331,7 +1331,7 @@ static long nvm_ioctl_dev_create(struct file *file, void __user *arg)
 			flags &= ~NVM_TARGET_FACTORY;
 
 		if (flags) {
-			pr_err("nvm: flag not supported\n");
+			pr_err("flag not supported\n");
 			return -EINVAL;
 		}
 	}
@@ -1349,7 +1349,7 @@ static long nvm_ioctl_dev_remove(struct file *file, void __user *arg)
 	remove.tgtname[DISK_NAME_LEN - 1] = '\0';
 
 	if (remove.flags != 0) {
-		pr_err("nvm: no flags supported\n");
+		pr_err("no flags supported\n");
 		return -EINVAL;
 	}
 
@@ -1365,7 +1365,7 @@ static long nvm_ioctl_dev_init(struct file *file, void __user *arg)
 		return -EFAULT;
 
 	if (init.flags != 0) {
-		pr_err("nvm: no flags supported\n");
+		pr_err("no flags supported\n");
 		return -EINVAL;
 	}
 
-- 
2.17.1


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

* [PATCH 2/2] lightnvm: print error when target is not found
  2019-07-27 18:26 [PATCH 0/2] lightnvm: minor updates for lightnvm core Minwoo Im
  2019-07-27 18:26 ` [PATCH 1/2] lightnvm: introduce pr_fmt for the prefix nvm Minwoo Im
@ 2019-07-27 18:26 ` Minwoo Im
  1 sibling, 0 replies; 4+ messages in thread
From: Minwoo Im @ 2019-07-27 18:26 UTC (permalink / raw)
  To: linux-block, linux-kernel
  Cc: Klaus Birkelund, Minwoo Im, Matias Bjørling, Javier González

If userspace requests target to be removed, nvm_remove_tgt() will
iterate the nvm_devices to find out the given target, but if not
found, then it should print out the error.

Cc: Matias Bjørling <mb@lightnvm.io>
Cc: Javier González <javier@javigon.com>
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
---
 drivers/lightnvm/core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index 4c7b48f72e80..4c89a2420a51 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -494,8 +494,11 @@ static int nvm_remove_tgt(struct nvm_ioctl_remove *remove)
 	}
 	up_read(&nvm_lock);
 
-	if (!t)
+	if (!t) {
+		pr_err("failed to remove target %s not found\n",
+				remove->tgtname);
 		return 1;
+	}
 
 	__nvm_remove_target(t, true);
 	kref_put(&dev->ref, nvm_free);
-- 
2.17.1


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

* Re: [PATCH 1/2] lightnvm: introduce pr_fmt for the prefix nvm
  2019-07-27 18:26 ` [PATCH 1/2] lightnvm: introduce pr_fmt for the prefix nvm Minwoo Im
@ 2019-08-11 19:43   ` Matias Bjørling
  0 siblings, 0 replies; 4+ messages in thread
From: Matias Bjørling @ 2019-08-11 19:43 UTC (permalink / raw)
  To: Minwoo Im, linux-block, linux-kernel
  Cc: Klaus Birkelund, Javier González, Chaitanya Kulkarni

On 7/27/19 8:26 PM, Minwoo Im wrote:
> all the pr_() family can have this prefix by pr_fmt.
> 
> Changes to V2:
>    - Fix typo in title (s/previx/prefix)
> 
> Changes to V1:
>    - Squashed multiple lines to make it short (Chaitanya)
> 
> Cc: Matias Bjørling <mb@lightnvm.io>
> Cc: Javier González <javier@javigon.com>
> Cc: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>
> Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
> Reviewed-by: Javier González <javier@javigon.com>
> ---
>   drivers/lightnvm/core.c | 48 ++++++++++++++++++++---------------------
>   1 file changed, 24 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
> index a600934fdd9c..4c7b48f72e80 100644
> --- a/drivers/lightnvm/core.c
> +++ b/drivers/lightnvm/core.c
> @@ -4,6 +4,7 @@
>    * Initial release: Matias Bjorling <m@bjorling.me>
>    */
>   
> +#define pr_fmt(fmt) "nvm: " fmt
>   #include <linux/list.h>
>   #include <linux/types.h>
>   #include <linux/sem.h>
> @@ -74,7 +75,7 @@ static int nvm_reserve_luns(struct nvm_dev *dev, int lun_begin, int lun_end)
>   
>   	for (i = lun_begin; i <= lun_end; i++) {
>   		if (test_and_set_bit(i, dev->lun_map)) {
> -			pr_err("nvm: lun %d already allocated\n", i);
> +			pr_err("lun %d already allocated\n", i);
>   			goto err;
>   		}
>   	}
> @@ -264,7 +265,7 @@ static int nvm_config_check_luns(struct nvm_geo *geo, int lun_begin,
>   				 int lun_end)
>   {
>   	if (lun_begin > lun_end || lun_end >= geo->all_luns) {
> -		pr_err("nvm: lun out of bound (%u:%u > %u)\n",
> +		pr_err("lun out of bound (%u:%u > %u)\n",
>   			lun_begin, lun_end, geo->all_luns - 1);
>   		return -EINVAL;
>   	}
> @@ -297,7 +298,7 @@ static int __nvm_config_extended(struct nvm_dev *dev,
>   	if (e->op == 0xFFFF) {
>   		e->op = NVM_TARGET_DEFAULT_OP;
>   	} else if (e->op < NVM_TARGET_MIN_OP || e->op > NVM_TARGET_MAX_OP) {
> -		pr_err("nvm: invalid over provisioning value\n");
> +		pr_err("invalid over provisioning value\n");
>   		return -EINVAL;
>   	}
>   
> @@ -334,23 +335,23 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create)
>   		e = create->conf.e;
>   		break;
>   	default:
> -		pr_err("nvm: config type not valid\n");
> +		pr_err("config type not valid\n");
>   		return -EINVAL;
>   	}
>   
>   	tt = nvm_find_target_type(create->tgttype);
>   	if (!tt) {
> -		pr_err("nvm: target type %s not found\n", create->tgttype);
> +		pr_err("target type %s not found\n", create->tgttype);
>   		return -EINVAL;
>   	}
>   
>   	if ((tt->flags & NVM_TGT_F_HOST_L2P) != (dev->geo.dom & NVM_RSP_L2P)) {
> -		pr_err("nvm: device is incompatible with target L2P type.\n");
> +		pr_err("device is incompatible with target L2P type.\n");
>   		return -EINVAL;
>   	}
>   
>   	if (nvm_target_exists(create->tgtname)) {
> -		pr_err("nvm: target name already exists (%s)\n",
> +		pr_err("target name already exists (%s)\n",
>   							create->tgtname);
>   		return -EINVAL;
>   	}
> @@ -367,7 +368,7 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create)
>   
>   	tgt_dev = nvm_create_tgt_dev(dev, e.lun_begin, e.lun_end, e.op);
>   	if (!tgt_dev) {
> -		pr_err("nvm: could not create target device\n");
> +		pr_err("could not create target device\n");
>   		ret = -ENOMEM;
>   		goto err_t;
>   	}
> @@ -686,7 +687,7 @@ static int nvm_set_rqd_ppalist(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd,
>   	rqd->nr_ppas = nr_ppas;
>   	rqd->ppa_list = nvm_dev_dma_alloc(dev, GFP_KERNEL, &rqd->dma_ppa_list);
>   	if (!rqd->ppa_list) {
> -		pr_err("nvm: failed to allocate dma memory\n");
> +		pr_err("failed to allocate dma memory\n");
>   		return -ENOMEM;
>   	}
>   
> @@ -1048,7 +1049,7 @@ int nvm_set_chunk_meta(struct nvm_tgt_dev *tgt_dev, struct ppa_addr *ppas,
>   		return 0;
>   
>   	if (nr_ppas > NVM_MAX_VLBA) {
> -		pr_err("nvm: unable to update all blocks atomically\n");
> +		pr_err("unable to update all blocks atomically\n");
>   		return -EINVAL;
>   	}
>   
> @@ -1111,27 +1112,26 @@ static int nvm_init(struct nvm_dev *dev)
>   	int ret = -EINVAL;
>   
>   	if (dev->ops->identity(dev)) {
> -		pr_err("nvm: device could not be identified\n");
> +		pr_err("device could not be identified\n");
>   		goto err;
>   	}
>   
> -	pr_debug("nvm: ver:%u.%u nvm_vendor:%x\n",
> -				geo->major_ver_id, geo->minor_ver_id,
> -				geo->vmnt);
> +	pr_debug("ver:%u.%u nvm_vendor:%x\n", geo->major_ver_id,
> +			geo->minor_ver_id, geo->vmnt);
>   
>   	ret = nvm_core_init(dev);
>   	if (ret) {
> -		pr_err("nvm: could not initialize core structures.\n");
> +		pr_err("could not initialize core structures.\n");
>   		goto err;
>   	}
>   
> -	pr_info("nvm: registered %s [%u/%u/%u/%u/%u]\n",
> +	pr_info("registered %s [%u/%u/%u/%u/%u]\n",
>   			dev->name, dev->geo.ws_min, dev->geo.ws_opt,
>   			dev->geo.num_chk, dev->geo.all_luns,
>   			dev->geo.num_ch);
>   	return 0;
>   err:
> -	pr_err("nvm: failed to initialize nvm\n");
> +	pr_err("failed to initialize nvm\n");
>   	return ret;
>   }
>   
> @@ -1169,7 +1169,7 @@ int nvm_register(struct nvm_dev *dev)
>   	dev->dma_pool = dev->ops->create_dma_pool(dev, "ppalist",
>   						  exp_pool_size);
>   	if (!dev->dma_pool) {
> -		pr_err("nvm: could not create dma pool\n");
> +		pr_err("could not create dma pool\n");
>   		kref_put(&dev->ref, nvm_free);
>   		return -ENOMEM;
>   	}
> @@ -1214,7 +1214,7 @@ static int __nvm_configure_create(struct nvm_ioctl_create *create)
>   	up_write(&nvm_lock);
>   
>   	if (!dev) {
> -		pr_err("nvm: device not found\n");
> +		pr_err("device not found\n");
>   		return -EINVAL;
>   	}
>   
> @@ -1288,7 +1288,7 @@ static long nvm_ioctl_get_devices(struct file *file, void __user *arg)
>   		i++;
>   
>   		if (i > 31) {
> -			pr_err("nvm: max 31 devices can be reported.\n");
> +			pr_err("max 31 devices can be reported.\n");
>   			break;
>   		}
>   	}
> @@ -1315,7 +1315,7 @@ static long nvm_ioctl_dev_create(struct file *file, void __user *arg)
>   
>   	if (create.conf.type == NVM_CONFIG_TYPE_EXTENDED &&
>   	    create.conf.e.rsv != 0) {
> -		pr_err("nvm: reserved config field in use\n");
> +		pr_err("reserved config field in use\n");
>   		return -EINVAL;
>   	}
>   
> @@ -1331,7 +1331,7 @@ static long nvm_ioctl_dev_create(struct file *file, void __user *arg)
>   			flags &= ~NVM_TARGET_FACTORY;
>   
>   		if (flags) {
> -			pr_err("nvm: flag not supported\n");
> +			pr_err("flag not supported\n");
>   			return -EINVAL;
>   		}
>   	}
> @@ -1349,7 +1349,7 @@ static long nvm_ioctl_dev_remove(struct file *file, void __user *arg)
>   	remove.tgtname[DISK_NAME_LEN - 1] = '\0';
>   
>   	if (remove.flags != 0) {
> -		pr_err("nvm: no flags supported\n");
> +		pr_err("no flags supported\n");
>   		return -EINVAL;
>   	}
>   
> @@ -1365,7 +1365,7 @@ static long nvm_ioctl_dev_init(struct file *file, void __user *arg)
>   		return -EFAULT;
>   
>   	if (init.flags != 0) {
> -		pr_err("nvm: no flags supported\n");
> +		pr_err("no flags supported\n");
>   		return -EINVAL;
>   	}
>   
> 

Thanks Minwoo. Applied.

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

end of thread, other threads:[~2019-08-11 19:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-27 18:26 [PATCH 0/2] lightnvm: minor updates for lightnvm core Minwoo Im
2019-07-27 18:26 ` [PATCH 1/2] lightnvm: introduce pr_fmt for the prefix nvm Minwoo Im
2019-08-11 19:43   ` Matias Bjørling
2019-07-27 18:26 ` [PATCH 2/2] lightnvm: print error when target is not found Minwoo Im

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).