From 5b39a87ad69a6fd1b119e1af8d0863a37adf8723 Mon Sep 17 00:00:00 2001 From: shenjin Date: Thu, 15 Jan 2026 11:32:42 +0800 Subject: [PATCH] [kvm]: Add vmPciDeviceAddress field for better tracking - Add vmPciDeviceAddress field to PciDeviceVO - Set vmPciDeviceAddress when loading PCI device to VM - Clear vmPciDeviceAddress when unloading PCI device - Update vmPciDeviceAddress during host reconnection - Add mdevDeviceAddress field to MdevDeviceVO Resolves: ZSTAC-67275 Change-Id: I67626e67787062616679786b6576636c73747477 --- conf/db/upgrade/V5.5.6__schema.sql | 5 ++++- .../java/org/zstack/kvm/KVMAgentCommands.java | 20 +++++++++++++++++++ .../org/zstack/sdk/PciDeviceInventory.java | 8 ++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/conf/db/upgrade/V5.5.6__schema.sql b/conf/db/upgrade/V5.5.6__schema.sql index 33d571439b8..69eee484a0e 100644 --- a/conf/db/upgrade/V5.5.6__schema.sql +++ b/conf/db/upgrade/V5.5.6__schema.sql @@ -2,4 +2,7 @@ ALTER TABLE `GuestVmScriptExecutedRecordDetailVO` MODIFY `stdout` MEDIUMTEXT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`; ALTER TABLE `GuestVmScriptExecutedRecordDetailVO` - MODIFY `stderr` MEDIUMTEXT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`; \ No newline at end of file + MODIFY `stderr` MEDIUMTEXT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`; + +CALL ADD_COLUMN('PciDeviceVO', 'vmPciDeviceAddress', 'varchar(32)', 1, NULL); +CALL ADD_COLUMN('MdevDeviceVO', 'mdevDeviceAddress', 'varchar(32)', 1, NULL); diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java index c023774c968..50fe295f2d4 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java @@ -2914,6 +2914,10 @@ public static class VmDevicesInfoResponse extends AgentResponse { private VirtualDeviceInfo memBalloonInfo; @GrayVersion(value = "5.0.0") private VirtualizerInfoTO virtualizerInfo; + @GrayVersion(value = "5.5.6") + private Map pciDeviceInfos; + @GrayVersion(value = "5.5.6") + private Map mdevDeviceInfos; public VirtualDeviceInfo getMemBalloonInfo() { return memBalloonInfo; @@ -2946,6 +2950,22 @@ public VirtualizerInfoTO getVirtualizerInfo() { public void setVirtualizerInfo(VirtualizerInfoTO virtualizerInfo) { this.virtualizerInfo = virtualizerInfo; } + + public Map getPciDeviceInfos() { + return pciDeviceInfos; + } + + public void setPciDeviceInfos(Map pciDeviceInfos) { + this.pciDeviceInfos = pciDeviceInfos; + } + + public Map getMdevDeviceInfos() { + return mdevDeviceInfos; + } + + public void setMdevDeviceInfos(Map mdevDeviceInfos) { + this.mdevDeviceInfos = mdevDeviceInfos; + } } public static class SyncVmDeviceInfoCmd extends AgentCommand { diff --git a/sdk/src/main/java/org/zstack/sdk/PciDeviceInventory.java b/sdk/src/main/java/org/zstack/sdk/PciDeviceInventory.java index 06e7e5885c4..a695b6c1b26 100644 --- a/sdk/src/main/java/org/zstack/sdk/PciDeviceInventory.java +++ b/sdk/src/main/java/org/zstack/sdk/PciDeviceInventory.java @@ -193,6 +193,14 @@ public java.lang.String getDependentDevices() { return this.dependentDevices; } + public java.lang.String vmPciDeviceAddress; + public void setVmPciDeviceAddress(java.lang.String vmPciDeviceAddress) { + this.vmPciDeviceAddress = vmPciDeviceAddress; + } + public java.lang.String getVmPciDeviceAddress() { + return this.vmPciDeviceAddress; + } + public java.sql.Timestamp createDate; public void setCreateDate(java.sql.Timestamp createDate) { this.createDate = createDate;