@@ -234,7 +234,8 @@ static struct ndctl_dax * get_dax_region(struct ndctl_region *region)
return NULL;
}
-static int test_daxdev_clear_error(void)
+static int test_daxdev_clear_error(const char *bus_name,
+ const char *region_name)
{
int rc = 0, i;
struct ndctl_ctx *ctx;
@@ -264,10 +265,12 @@ static int test_daxdev_clear_error(void)
}
ndctl_region_foreach(bus, region) {
- /* find the dax region */
- dax = get_dax_region(region);
- if (dax)
+ if (strncmp(region_name,
+ ndctl_region_get_devname(region), 256) == 0) {
+ /* find the dax region */
+ dax = get_dax_region(region);
break;
+ }
}
if (!dax) {
@@ -277,8 +280,9 @@ static int test_daxdev_clear_error(void)
/* get badblocks */
if (snprintf(path, 256,
- "/sys/devices/platform/%s/ndbus0/%s/badblocks",
+ "/sys/devices/platform/%s/%s/%s/badblocks",
NFIT_PROVIDER0,
+ bus_name,
ndctl_region_get_devname(region)) >= 256) {
fprintf(stderr, "%s: buffer too small!\n",
ndctl_region_get_devname(region));
@@ -343,7 +347,7 @@ int main(int argc, char *argv[])
int rc;
struct sigaction act;
- if (argc < 1)
+ if (argc < 1 || argc > 4)
return -EINVAL;
memset(&act, 0, sizeof(act));
@@ -355,7 +359,7 @@ int main(int argc, char *argv[])
return 1;
}
- rc = test_daxdev_clear_error();
+ rc = test_daxdev_clear_error(argv[1], argv[2]);
return rc;
}
@@ -5,6 +5,7 @@ NDCTL="../ndctl/ndctl"
DAXCTL="../daxctl/daxctl"
BUS="-b nfit_test.0"
BUS1="-b nfit_test.1"
+json2var="s/[{}\",]//g; s/:/=/g"
rc=77
err() {
@@ -33,34 +34,42 @@ $NDCTL disable-region $BUS all
$NDCTL zero-labels $BUS all
$NDCTL enable-region $BUS all
-json=$($NDCTL create-namespace $BUS -t pmem -m dax -a 4096)
+query=". | sort_by(.available_size) | reverse | .[0].dev"
+region=$($NDCTL list $BUS -t pmem -Ri | jq -r "$query")
+
+json=$($NDCTL create-namespace $BUS -r $region -t pmem -m dax -a 4096)
chardev=$(echo $json | jq ". | select(.mode == \"dax\") | .daxregion.devices[0].chardev")
-# "dev":"namespace5.0",
+#{
+# "dev":"namespace6.0",
# "mode":"dax",
-# "size":64475136,
-# "uuid":"068776fa-50e6-4c27-b99a-4b1e710c627c",
+# "size":64004096,
+# "uuid":"83a925dd-42b5-4ac6-8588-6a50bfc0c001",
# "daxregion":{
-# "id":5,
-# "size":64475136,
+# "id":6,
+# "size":64004096,
# "align":4096,
# "devices":[
# {
-# "chardev":"dax5.0",
-# "size":64475136
+# "chardev":"dax6.0",
+# "size":64004096
# }
# ]
# }
+#}
+
+json1=$($NDCTL list $BUS)
+eval $(echo $json1 | sed -e "$json2var")
-read sector len < /sys/bus/platform/devices/nfit_test.0/ndbus0/region5/badblocks
+read sector len < /sys/bus/platform/devices/nfit_test.0/$dev/$region/badblocks
echo "sector: $sector len: $len"
# run the daxdev-errors test
test -x ./daxdev-errors
-./daxdev-errors
+./daxdev-errors $dev $region
# check badblocks, should be empty
-if read sector len < /sys/bus/platform/devices/nfit_test.0/ndbus0/region5/badblocks; then
+if read sector len < /sys/bus/platform/devices/nfit_test.0/$dev/$region/badblocks; then
echo "badblocks empty, expected"
fi
[ -n "$sector" ] && echo "fail: $LINENO" && exit 1
Implementation had static config and made assumption that the bus and region in nfit_test will be static. Adding code to discover the proper bus, region, and also pass onto daxdev-errors. Signed-off-by: Dave Jiang <dave.jiang@intel.com> --- 0 files changed