On 10/21/25 2:26 PM, Alison Schofield wrote:
> 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]>
Reviewed-by: Dave Jiang <[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) {