[lkml]   [2018]   [Aug]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH] libnvdimm, region_devs: stop NDD_ALIASING bit test if one test pass
From: Ocean He <>

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 <>
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
0x0121 125.7 GiB Healthy 0 Disabled
0x1021 125.7 GiB Healthy 0 Disabled
0x1121 125.7 GiB Healthy 0 Disabled

# 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)) {
+ break;
+ }
if (alias)
 \ /
  Last update: 2018-08-19 06:02    [W:0.076 / U:0.948 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site