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 <[email protected]>
---
 0 files changed

diff --git a/test/daxdev-errors.c b/test/daxdev-errors.c
index 687e593..321f942 100644
--- a/test/daxdev-errors.c
+++ b/test/daxdev-errors.c
@@ -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;
 }
diff --git a/test/daxdev-errors.sh b/test/daxdev-errors.sh
index 1777210..88e4457 100755
--- a/test/daxdev-errors.sh
+++ b/test/daxdev-errors.sh
@@ -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

_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to