The pmem_ns unit test frequently fails when run as part of the full suite, yet passes when executed alone.
The test first looks for an ACPI.NFIT bus with a usable region, and if none is found, falls back to using the nfit_test bus. However, that fallback consistently fails with errors such as: path: /sys/devices/platform/nfit_test.0/ndbus2/region7/namespace7.0/uuid libndctl: write_attr: failed to open /sys/devices/platform/nfit_test.0/ndbus2/region7/namespace7.0/uuid: No such file or directory /root/ndctl/build/test/pmem-ns: failed to create PMEM namespace This occurs because calling ndctl_test_init() with a NULL context only unloads and reloads the nfit_test module, but does not invalidate and reinitialize the libndctl context or sysfs view from previous runs. The resulting stale state prevents the pmem_ns test from creating a new namespace cleanly. Replace the NULL context parameter when calling ndctl_test_init() with the available ndctl_ctx to ensure pmem_ns can find usable PMEM regions. Reported-by: Marc Herbert <[email protected]> Closes: https://github.com/pmem/ndctl/issues/290 Signed-off-by: Alison Schofield <[email protected]> --- test/pmem_namespaces.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pmem_namespaces.c b/test/pmem_namespaces.c index 4bafff5164c8..7b8de9dcb61d 100644 --- a/test/pmem_namespaces.c +++ b/test/pmem_namespaces.c @@ -191,7 +191,7 @@ int test_pmem_namespaces(int log_level, struct ndctl_test *test, if (!bus) { fprintf(stderr, "ACPI.NFIT unavailable falling back to nfit_test\n"); - rc = ndctl_test_init(&kmod_ctx, &mod, NULL, log_level, test); + rc = ndctl_test_init(&kmod_ctx, &mod, ctx, log_level, test); ndctl_invalidate(ctx); bus = ndctl_bus_get_by_provider(ctx, "nfit_test.0"); if (rc < 0 || !bus) { -- 2.37.3
