From a5a297f387fee9e9aa4cbc2df6788c330fd33ad1 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 26 May 2020 16:26:25 +0200 Subject: [PATCH] qemu: Skip pre-creation of NVMe disks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Upon migration with disks, libvirt determines if each disk exists on the destination and tries to pre-create missing ones. Well, NVMe disks can't be pre-created, but they can be checked for presence. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1823639 Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- src/qemu/qemu_migration.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 02e8271e42..7ee5b5eda8 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -315,6 +315,7 @@ qemuMigrationDstPrecreateStorage(virDomainObjPtr vm, for (i = 0; i < nbd->ndisks; i++) { virDomainDiskDefPtr disk; const char *diskSrcPath; + g_autofree char *nvmePath = NULL; VIR_DEBUG("Looking up disk target '%s' (capacity=%llu)", nbd->disks[i].target, nbd->disks[i].capacity); @@ -326,7 +327,12 @@ qemuMigrationDstPrecreateStorage(virDomainObjPtr vm, goto cleanup; } - diskSrcPath = virDomainDiskGetSource(disk); + if (disk->src->type == VIR_STORAGE_TYPE_NVME) { + virPCIDeviceAddressGetSysfsFile(&disk->src->nvme->pciAddr, &nvmePath); + diskSrcPath = nvmePath; + } else { + diskSrcPath = virDomainDiskGetSource(disk); + } /* Skip disks we don't want to migrate and already existing disks. */ if (!qemuMigrationAnyCopyDisk(disk, nmigrate_disks, migrate_disks) || -- 2.39.5