]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvmet: initialize discovery subsys after debugfs is initialized
authorMohamed Khalfella <mkhalfella@purestorage.com>
Fri, 25 Jul 2025 20:50:05 +0000 (13:50 -0700)
committerChristoph Hellwig <hch@lst.de>
Thu, 31 Jul 2025 13:35:46 +0000 (06:35 -0700)
During nvme target initialization discovery subsystem is initialized
before "nvmet" debugfs directory is created. This results in discovery
subsystem debugfs directory to be created in debugfs root directory.

nvmet_init() ->
  nvmet_init_discovery() ->
    nvmet_subsys_alloc() ->
      nvmet_debugfs_subsys_setup()

In other words, the codepath above is exeucted before nvmet_debugfs is
created. We get /sys/kernel/debug/nqn.2014-08.org.nvmexpress.discovery
instead of /sys/kernel/debug/nvmet/nqn.2014-08.org.nvmexpress.discovery.
Move nvmet_init_discovery() call after nvmet_init_debugfs() to fix it.

Fixes: 649fd41420a8 ("nvmet: add debugfs support")
Signed-off-by: Mohamed Khalfella <mkhalfella@purestorage.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Hannes Reinecke <hare@kernel.org>
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/core.c

index 884286f90688aecd86a40d4632d185c69bb71f54..83f3d2f8ef2d046be454c5e5bd8024d097007b54 100644 (file)
@@ -1960,24 +1960,24 @@ static int __init nvmet_init(void)
        if (!nvmet_wq)
                goto out_free_buffered_work_queue;
 
-       error = nvmet_init_discovery();
+       error = nvmet_init_debugfs();
        if (error)
                goto out_free_nvmet_work_queue;
 
-       error = nvmet_init_debugfs();
+       error = nvmet_init_discovery();
        if (error)
-               goto out_exit_discovery;
+               goto out_exit_debugfs;
 
        error = nvmet_init_configfs();
        if (error)
-               goto out_exit_debugfs;
+               goto out_exit_discovery;
 
        return 0;
 
-out_exit_debugfs:
-       nvmet_exit_debugfs();
 out_exit_discovery:
        nvmet_exit_discovery();
+out_exit_debugfs:
+       nvmet_exit_debugfs();
 out_free_nvmet_work_queue:
        destroy_workqueue(nvmet_wq);
 out_free_buffered_work_queue: