]> 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 14:39:24 +0000 (16:39 +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 175c5b6d4dd587f92b36d522f9e579c943b246dd..b6247e4afc9cdb361ae9a98ae83467c2265a9f12 100644 (file)
@@ -1962,24 +1962,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: