From: "Verma, Vishal L" <vishal.l.verma@intel.com>
To: "Williams, Dan J" <dan.j.williams@intel.com>,
"ross.zwisler@linux.intel.com" <ross.zwisler@linux.intel.com>,
"oceanhehy@gmail.com" <oceanhehy@gmail.com>,
"Jiang, Dave" <dave.jiang@intel.com>
Cc: "hehy1@lenovo.com" <hehy1@lenovo.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>
Subject: Re: [PATCH] libnvdimm, region_devs: stop NDD_ALIASING bit test if one test pass
Date: Thu, 30 Aug 2018 21:51:01 +0000 [thread overview]
Message-ID: <1535665860.5995.78.camel@intel.com> (raw)
In-Reply-To: <1534651288-30306-1-git-send-email-oceanhehy@gmail.com>
On Sun, 2018-08-19 at 00:01 -0400, Ocean He wrote:
> From: Ocean He <hehy1@lenovo.com>
>
> There is no need to finish entire loop to execute NDD_ALIASING bit
> test
> against every nvdimm->flags. In practice, all the nd_mapping->nvdimm
> have the same flags.
>
> Because the check of alias is "if (alias)" but not
> "if (alias == nd_region->ndr_mappings)", there is no function change
> while
> just save a few cycles.
>
> Signed-off-by: Ocean He <hehy1@lenovo.com>
> ---
> A test to check if all the nd_mapping->nvdimm have the same flags,
> using
> Lenovo ThinkSystem SR630 and 4.18-rc6.
>
> # ipmctl show -dimm
>
> DimmID Capacity HealthState ActionRequired LockState
> FWVersion
> 0x0021 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
> 0x0121 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
> 0x1021 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
> 0x1121 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
>
> # ipmctl create -f -goal -socket 0x0 PersistentMemoryType=AppDirect
>
> # ipmctl create -f -goal -socket 0x1 PersistentMemoryType=AppDirect
>
> # reboot, to make goal configuration take effect.
>
> # ndctl create-namespace -r region0 -s 100m -t pmem -m fsdax
>
> # ndctl create-namespace -r region1 -s 100m -t pmem -m fsdax
>
> # reboot and find all the nd_mapping->nvdimm have the same flags.
>
> drivers/nvdimm/region_devs.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/nvdimm/region_devs.c
> b/drivers/nvdimm/region_devs.c
> index ec3543b..fc3bc1c 100644
> --- a/drivers/nvdimm/region_devs.c
> +++ b/drivers/nvdimm/region_devs.c
> @@ -234,8 +234,10 @@ int nd_region_to_nstype(struct nd_region
> *nd_region)
> struct nd_mapping *nd_mapping = &nd_region-
> >mapping[i];
> struct nvdimm *nvdimm = nd_mapping->nvdimm;
>
> - if (test_bit(NDD_ALIASING, &nvdimm->flags))
> + if (test_bit(NDD_ALIASING, &nvdimm->flags))
> {
> alias++;
> + break;
I think we can go a step further, and instead of the 'break' followed
by a check for the 'alias' variable, in the loop, just return
ND_DEVICE_NAMESPACE_PMEM if the NDD_ALIASING bit is found for any
mapping. Outside the loop, simply return ND_DEVICE_NAMESPACE_IO. That
makes it much cleaner and now we can get rid of 'alias' entirely.
> + }
> }
> if (alias)
> return ND_DEVICE_NAMESPACE_PMEM;
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: "Verma, Vishal L" <vishal.l.verma@intel.com>
To: "Williams, Dan J" <dan.j.williams@intel.com>,
"ross.zwisler@linux.intel.com" <ross.zwisler@linux.intel.com>,
"oceanhehy@gmail.com" <oceanhehy@gmail.com>,
"Jiang, Dave" <dave.jiang@intel.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
"hehy1@lenovo.com" <hehy1@lenovo.com>
Subject: Re: [PATCH] libnvdimm, region_devs: stop NDD_ALIASING bit test if one test pass
Date: Thu, 30 Aug 2018 21:51:01 +0000 [thread overview]
Message-ID: <1535665860.5995.78.camel@intel.com> (raw)
In-Reply-To: <1534651288-30306-1-git-send-email-oceanhehy@gmail.com>
On Sun, 2018-08-19 at 00:01 -0400, Ocean He wrote:
> From: Ocean He <hehy1@lenovo.com>
>
> There is no need to finish entire loop to execute NDD_ALIASING bit
> test
> against every nvdimm->flags. In practice, all the nd_mapping->nvdimm
> have the same flags.
>
> Because the check of alias is "if (alias)" but not
> "if (alias == nd_region->ndr_mappings)", there is no function change
> while
> just save a few cycles.
>
> Signed-off-by: Ocean He <hehy1@lenovo.com>
> ---
> A test to check if all the nd_mapping->nvdimm have the same flags,
> using
> Lenovo ThinkSystem SR630 and 4.18-rc6.
>
> # ipmctl show -dimm
>
> DimmID Capacity HealthState ActionRequired LockState
> FWVersion
> 0x0021 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
> 0x0121 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
> 0x1021 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
> 0x1121 125.7
> GiB Healthy 0 Disabled 01.00.00.48
> 88
>
> # ipmctl create -f -goal -socket 0x0 PersistentMemoryType=AppDirect
>
> # ipmctl create -f -goal -socket 0x1 PersistentMemoryType=AppDirect
>
> # reboot, to make goal configuration take effect.
>
> # ndctl create-namespace -r region0 -s 100m -t pmem -m fsdax
>
> # ndctl create-namespace -r region1 -s 100m -t pmem -m fsdax
>
> # reboot and find all the nd_mapping->nvdimm have the same flags.
>
> drivers/nvdimm/region_devs.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/nvdimm/region_devs.c
> b/drivers/nvdimm/region_devs.c
> index ec3543b..fc3bc1c 100644
> --- a/drivers/nvdimm/region_devs.c
> +++ b/drivers/nvdimm/region_devs.c
> @@ -234,8 +234,10 @@ int nd_region_to_nstype(struct nd_region
> *nd_region)
> struct nd_mapping *nd_mapping = &nd_region-
> >mapping[i];
> struct nvdimm *nvdimm = nd_mapping->nvdimm;
>
> - if (test_bit(NDD_ALIASING, &nvdimm->flags))
> + if (test_bit(NDD_ALIASING, &nvdimm->flags))
> {
> alias++;
> + break;
I think we can go a step further, and instead of the 'break' followed
by a check for the 'alias' variable, in the loop, just return
ND_DEVICE_NAMESPACE_PMEM if the NDD_ALIASING bit is found for any
mapping. Outside the loop, simply return ND_DEVICE_NAMESPACE_IO. That
makes it much cleaner and now we can get rid of 'alias' entirely.
> + }
> }
> if (alias)
> return ND_DEVICE_NAMESPACE_PMEM;
next prev parent reply other threads:[~2018-08-30 21:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-19 4:01 [PATCH] libnvdimm, region_devs: stop NDD_ALIASING bit test if one test pass Ocean He
2018-08-19 4:01 ` Ocean He
2018-08-30 21:51 ` Verma, Vishal L [this message]
2018-08-30 21:51 ` Verma, Vishal L
2018-09-02 12:40 ` [External] " Ocean HY1 He
2018-09-02 12:40 ` Ocean HY1 He
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1535665860.5995.78.camel@intel.com \
--to=vishal.l.verma@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=hehy1@lenovo.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=oceanhehy@gmail.com \
--cc=ross.zwisler@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.