From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752198AbcEWJQw (ORCPT ); Mon, 23 May 2016 05:16:52 -0400 Received: from mail-wm0-f52.google.com ([74.125.82.52]:36707 "EHLO mail-wm0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752108AbcEWJQu (ORCPT ); Mon, 23 May 2016 05:16:50 -0400 Subject: Re: [RFC PATCH 2/2] lightnvm: Append device name to target name To: Wenwei Tao References: <1463994814-3388-1-git-send-email-wwtao0320@163.com> <1463994814-3388-2-git-send-email-wwtao0320@163.com> Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, ww.tao0320@gmail.com From: =?UTF-8?Q?Matias_Bj=c3=b8rling?= Message-ID: <5742CA7F.4030000@lightnvm.io> Date: Mon, 23 May 2016 11:16:47 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1463994814-3388-2-git-send-email-wwtao0320@163.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/23/2016 11:13 AM, Wenwei Tao wrote: > From: Wenwei Tao > > We may create targets with same name on different > backend devices, this is not what we want, so append > the device name to target name to make the new target > name unique in the system. > > Signed-off-by: Wenwei Tao > --- > drivers/lightnvm/gennvm.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c > index 39ff0af..ecb09cb 100644 > --- a/drivers/lightnvm/gennvm.c > +++ b/drivers/lightnvm/gennvm.c > @@ -43,9 +43,18 @@ static int gen_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create) > struct gendisk *tdisk; > struct nvm_tgt_type *tt; > struct nvm_target *t; > + char tgtname[DISK_NAME_LEN]; > void *targetdata; > int ret = -ENOMEM; > > + if (strlen(dev->name) + strlen(create->tgtname) + 1 > DISK_NAME_LEN) { > + pr_err("nvm: target name too long. %s:%s\n", > + dev->name, create->tgtname); > + return -EINVAL; > + } > + > + sprintf(tgtname, "%s%s", dev->name, create->tgtname); > + > tt = nvm_find_target_type(create->tgttype, 1); > if (!tt) { > pr_err("nvm: target type %s not found\n", create->tgttype); > @@ -53,7 +62,7 @@ static int gen_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create) > } > > mutex_lock(&gn->lock); > - t = gen_find_target(gn, create->tgtname); > + t = gen_find_target(gn, tgtname); > if (t) { > pr_err("nvm: target name already exists.\n"); > ret = -EINVAL; > @@ -73,7 +82,7 @@ static int gen_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create) > if (!tdisk) > goto err_queue; > > - sprintf(tdisk->disk_name, "%s", create->tgtname); > + sprintf(tdisk->disk_name, "%s", tgtname); > tdisk->flags = GENHD_FL_EXT_DEVT; > tdisk->major = 0; > tdisk->first_minor = 0; > Hi Wenwei, what about the case where a target instance has multiple devices associated? I am okay with having the user choosing a unique name for the target to be exposed.