vmm: DeviceConfig: Store path as Option<PathBuf>

Relax DeviceConfig::path from PathBuf to Option<PathBuf> in preparation
to accept an externally-opened vfio cdev FD. The parser and OpenAPI spec
still enforces that `path` is set, so callers see no behavior change.

Signed-off-by: Bo Chen <bchen@crusoe.ai>
Assisted-by: Claude:Opus-4.7
This commit is contained in:
Bo Chen
2026-04-28 03:48:43 +00:00
committed by Rob Bradford
parent 96ea24339d
commit bc5363823a
3 changed files with 25 additions and 14 deletions
+7 -2
View File
@@ -758,7 +758,8 @@ impl ApplyLandlock for DebugConsoleConfig {
pub struct DeviceConfig {
#[serde(flatten)]
pub pci_common: PciDeviceCommonConfig,
pub path: PathBuf,
#[serde(default)]
pub path: Option<PathBuf>,
#[serde(default)]
pub x_nv_gpudirect_clique: Option<u8>,
#[serde(default)]
@@ -767,7 +768,11 @@ pub struct DeviceConfig {
impl ApplyLandlock for DeviceConfig {
fn apply_landlock(&self, landlock: &mut Landlock) -> LandlockResult<()> {
let device_path = fs::read_link(self.path.as_path()).map_err(LandlockError::OpenPath)?;
let path = self
.path
.as_deref()
.expect("DeviceConfig::parse and OpenAPI spec enforce a path");
let device_path = fs::read_link(path).map_err(LandlockError::OpenPath)?;
let iommu_group = device_path.file_name();
let iommu_group_str = iommu_group
.ok_or(LandlockError::InvalidPath)?