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


Reply via email to