From ceff64b3a9200957da8586ede99aa855d547c52f Mon Sep 17 00:00:00 2001 From: Sun Yuechi Date: Mon, 29 Jun 2026 20:53:26 -0700 Subject: [PATCH] blk/spdk: call spdk_env_opts_init() before setting pci options spdk_env_opts_init() reinitializes the whole spdk_env_opts struct, overwriting pci_allowed/pci_whitelist and num_pci_addr that were set just above it. As a result the local PCI device restriction never took effect. Initialize opts first, then fill in the PCI address fields. Fixes: https://tracker.ceph.com/issues/77802 Signed-off-by: Sun Yuechi --- src/blk/spdk/NVMEDevice.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/blk/spdk/NVMEDevice.cc b/src/blk/spdk/NVMEDevice.cc index dea2312156c..885aa765b45 100644 --- a/src/blk/spdk/NVMEDevice.cc +++ b/src/blk/spdk/NVMEDevice.cc @@ -593,6 +593,8 @@ int NVMEManager::try_get(const spdk_nvme_transport_id& trid, SharedDriverData ** struct spdk_pci_addr addr; int r; + spdk_env_opts_init(&opts); + bool local_pci_device = false; int rc = spdk_pci_addr_parse(&addr, trid.traddr); if (!rc) { @@ -605,7 +607,6 @@ int NVMEManager::try_get(const spdk_nvme_transport_id& trid, SharedDriverData ** opts.num_pci_addr = 1; } - spdk_env_opts_init(&opts); opts.name = "nvme-device-manager"; opts.core_mask = coremask_arg.c_str(); #if SPDK_VERSION >= SPDK_VERSION_NUM(21, 1, 0) -- 2.47.3