Spot check the new dax_region attributes available starting with kernel v4.10.
Signed-off-by: Dan Williams <[email protected]> --- test/libndctl.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/test/libndctl.c b/test/libndctl.c index 840376c34d32..c6e199dbb078 100644 --- a/test/libndctl.c +++ b/test/libndctl.c @@ -625,9 +625,12 @@ static int validate_dax(struct ndctl_dax *dax) struct ndctl_namespace *ndns = ndctl_dax_get_namespace(dax); const char *devname = ndctl_namespace_get_devname(ndns); struct ndctl_region *region = ndctl_dax_get_region(dax); - struct daxctl_region *dax_region = NULL; + struct ndctl_ctx *ctx = ndctl_dax_get_ctx(dax); + struct ndctl_test *test = ndctl_get_private_data(ctx); + struct daxctl_region *dax_region = NULL, *found; int rc = -ENXIO, fd, count, dax_expect; struct daxctl_dev *dax_dev, *seed; + struct daxctl_ctx *dax_ctx; uuid_t uuid, region_uuid; char devpath[50]; @@ -638,6 +641,35 @@ static int validate_dax(struct ndctl_dax *dax) return -ENXIO; } + dax_ctx = ndctl_get_daxctl_ctx(ctx); + count = 0; + daxctl_region_foreach(dax_ctx, found) + if (found == dax_region) + count++; + if (count != 1) { + fprintf(stderr, "%s: failed to iterate to single region instance\n", + devname); + return -ENXIO; + } + + if (ndctl_test_attempt(test, KERNEL_VERSION(4, 10, 0))) { + if (daxctl_region_get_size(dax_region) + != ndctl_dax_get_size(dax)) { + fprintf(stderr, "%s: expect size: %llu != %llu\n", + devname, ndctl_dax_get_size(dax), + daxctl_region_get_size(dax_region)); + return -ENXIO; + } + + if (daxctl_region_get_align(dax_region) + != ndctl_dax_get_align(dax)) { + fprintf(stderr, "%s: expect align: %lu != %lu\n", + devname, ndctl_dax_get_align(dax), + daxctl_region_get_align(dax_region)); + return -ENXIO; + } + } + rc = -ENXIO; ndctl_dax_get_uuid(dax, uuid); daxctl_region_get_uuid(dax_region, region_uuid); @@ -2646,6 +2678,7 @@ int test_libndctl(int loglevel, struct ndctl_test *test, struct ndctl_ctx *ctx) ndctl_set_log_priority(ctx, loglevel); daxctl_ctx = ndctl_get_daxctl_ctx(ctx); daxctl_set_log_priority(daxctl_ctx, loglevel); + ndctl_set_private_data(ctx, test); kmod_ctx = kmod_new(NULL, NULL); if (!kmod_ctx) _______________________________________________ Linux-nvdimm mailing list [email protected] https://lists.01.org/mailman/listinfo/linux-nvdimm
