From: Sun Yuechi Date: Tue, 30 Jun 2026 03:53:26 +0000 (-0700) Subject: blk/spdk: call spdk_env_opts_init() before setting pci options X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ceff64b3a9200957da8586ede99aa855d547c52f;p=ceph.git 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 --- 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)