]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 10:14:05 +0000 (12:14 +0200)
[ Upstream commit 528589947c1802b9357c2a9b96d88cc4a11cd88b ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/nvme/target/core.c

index 4606c881366691c898d02269e7ccd618a85ab80c..cfde5b018048ea1c598fa666f7661c57d028cdbb 100644 (file)
@@ -1714,24 +1714,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: