Variously 'cfg', 'driver', and 'priv' data are passed around the callstack, but we can get all of those as needed by passing around a single virDomainObj. Upcoming patches need vm->def as well, so let's clean this up first Signed-off-by: Cole Robinson <crobinso@redhat.com> --- src/qemu/qemu_backup.c | 12 ++--- src/qemu/qemu_domain.c | 97 +++++++++++++++++++++------------------- src/qemu/qemu_domain.h | 12 ++--- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_hotplug.c | 6 +-- src/qemu/qemu_process.c | 15 +++---- src/qemu/qemu_snapshot.c | 6 +-- 7 files changed, 69 insertions(+), 81 deletions(-) diff --git a/src/qemu/qemu_backup.c b/src/qemu/qemu_backup.c index 65a083ea74..a953d1879b 100644 --- a/src/qemu/qemu_backup.c +++ b/src/qemu/qemu_backup.c @@ -272,11 +272,8 @@ qemuBackupDiskPrepareDataOne(virDomainObj *vm, struct qemuBackupDiskData *dd, virJSONValue *actions, bool pull, - GHashTable *blockNamedNodeData, - virQEMUDriverConfig *cfg) + GHashTable *blockNamedNodeData) { - qemuDomainObjPrivate *priv = vm->privateData; - /* set data structure */ dd->backupdisk = backupdisk; dd->store = dd->backupdisk->store; @@ -315,7 +312,7 @@ qemuBackupDiskPrepareDataOne(virDomainObj *vm, dd->backingStore = dd->terminator = virStorageSourceNew(); } - if (qemuDomainPrepareStorageSourceBlockdev(NULL, dd->store, priv, cfg) < 0) + if (qemuDomainPrepareStorageSourceBlockdev(NULL, dd->store, vm) < 0) return -1; if (dd->backupdisk->incremental) { @@ -398,7 +395,6 @@ qemuBackupDiskPrepareData(virDomainObj *vm, virDomainBackupDef *def, GHashTable *blockNamedNodeData, virJSONValue *actions, - virQEMUDriverConfig *cfg, struct qemuBackupDiskData **rdd) { struct qemuBackupDiskData *disks = NULL; @@ -418,7 +414,7 @@ qemuBackupDiskPrepareData(virDomainObj *vm, ndisks++; if (qemuBackupDiskPrepareDataOne(vm, backupdisk, dd, actions, pull, - blockNamedNodeData, cfg) < 0) + blockNamedNodeData) < 0) goto error; if (pull) { @@ -883,7 +879,7 @@ qemuBackupBegin(virDomainObj *vm, goto endjob; if ((ndd = qemuBackupDiskPrepareData(vm, def, blockNamedNodeData, actions, - cfg, &dd)) <= 0) { + &dd)) <= 0) { if (ndd == 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("no disks selected for backup")); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 30c4c596df..bed8c558d0 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6124,10 +6124,11 @@ qemuDomainSetFakeReboot(virDomainObj *vm, } static void -qemuDomainCheckRemoveOptionalDisk(virQEMUDriver *driver, - virDomainObj *vm, +qemuDomainCheckRemoveOptionalDisk(virDomainObj *vm, size_t diskIndex) { + qemuDomainObjPrivate *priv = vm->privateData; + virQEMUDriver *driver = priv->driver; char uuid[VIR_UUID_STRING_BUFLEN]; virObjectEvent *event = NULL; virDomainDiskDef *disk = vm->def->disks[diskIndex]; @@ -6176,8 +6177,7 @@ qemuDomainCheckRemoveOptionalDisk(virQEMUDriver *driver, * clears any reported error if 0 is returned. */ int -qemuDomainCheckDiskStartupPolicy(virQEMUDriver *driver, - virDomainObj *vm, +qemuDomainCheckDiskStartupPolicy(virDomainObj *vm, size_t diskIndex, bool cold_boot) { @@ -6209,7 +6209,7 @@ qemuDomainCheckDiskStartupPolicy(virQEMUDriver *driver, break; } - qemuDomainCheckRemoveOptionalDisk(driver, vm, diskIndex); + qemuDomainCheckRemoveOptionalDisk(vm, diskIndex); virResetLastError(); return 0; } @@ -6416,10 +6416,10 @@ qemuDomainPrepareStorageSourceConfig(virStorageSource *src, static int qemuDomainPrepareStorageSource(virStorageSource *src, virDomainObj *vm, - virDomainDiskDef *disk, - virQEMUDriverConfig *cfg) + virDomainDiskDef *disk) { qemuDomainObjPrivate *priv = vm->privateData; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver); /* convert detected ISO format to 'raw' as qemu would not understand it */ if (src->format == VIR_STORAGE_FILE_ISO) @@ -6432,7 +6432,7 @@ qemuDomainPrepareStorageSource(virStorageSource *src, qemuDomainPrepareDiskSourceData(disk, src); if (!qemuDiskBusIsSD(disk->bus) && - qemuDomainPrepareStorageSourceBlockdev(disk, src, priv, cfg) < 0) + qemuDomainPrepareStorageSourceBlockdev(disk, src, vm) < 0) return -1; return 0; @@ -6548,15 +6548,15 @@ qemuDomainDetermineDiskChain(virQEMUDriver *driver, * backing chain we need to also consider the data store part of the current * image */ if (src->dataFileStore && !hadDataStore && - qemuDomainPrepareStorageSource(src->dataFileStore, vm, disk, cfg) < 0) + qemuDomainPrepareStorageSource(src->dataFileStore, vm, disk) < 0) return -1; for (n = src->backingStore; virStorageSourceIsBacking(n); n = n->backingStore) { - if (qemuDomainPrepareStorageSource(n, vm, disk, cfg) < 0) + if (qemuDomainPrepareStorageSource(n, vm, disk) < 0) return -1; if (n->dataFileStore && - qemuDomainPrepareStorageSource(n->dataFileStore, vm, disk, cfg) < 0) + qemuDomainPrepareStorageSource(n->dataFileStore, vm, disk) < 0) return -1; } @@ -9101,11 +9101,12 @@ qemuDomainPrepareStorageSourceNFS(virStorageSource *src) */ static bool qemuDomainPrepareStorageSourceNbdkit(virStorageSource *src, - virQEMUDriverConfig *cfg, const char *alias, - qemuDomainObjPrivate *priv) + virDomainObj *vm) { g_autoptr(qemuNbdkitCaps) nbdkit = NULL; + qemuDomainObjPrivate *priv = vm->privateData; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver); if (!cfg->storageUseNbdkit) return false; @@ -9135,10 +9136,12 @@ qemuDomainPrepareStorageSourceNbdkit(virStorageSource *src, */ static int qemuDomainPrepareStorageSourceTLS(virStorageSource *src, - virQEMUDriverConfig *cfg, - const char *parentAlias, - qemuDomainObjPrivate *priv) + virDomainObj *vm, + const char *parentAlias) { + qemuDomainObjPrivate *priv = vm->privateData; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver); + if (virStorageSourceGetActualType(src) != VIR_STORAGE_TYPE_NETWORK) return 0; @@ -9781,9 +9784,11 @@ qemuDomainPrepareDiskCachemode(virDomainDiskDef *disk) static int qemuDomainPrepareStorageSourcePR(virStorageSource *src, - qemuDomainObjPrivate *priv, + virDomainObj *vm, const char *parentalias) { + qemuDomainObjPrivate *priv = vm->privateData; + if (!src->pr) return 0; @@ -9804,16 +9809,17 @@ qemuDomainPrepareStorageSourcePR(virStorageSource *src, /** * qemuDomainPrepareDiskSourceLegacy: * @disk: disk to prepare - * @priv: VM private data - * @cfg: qemu driver config + * @vm: domain object * * Prepare any disk source relevant data for use with the -drive command line. */ static int qemuDomainPrepareDiskSourceLegacy(virDomainDiskDef *disk, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg) + virDomainObj *vm) { + qemuDomainObjPrivate *priv = vm->privateData; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver); + if (qemuDomainValidateStorageSource(disk->src, priv->qemuCaps) < 0) return -1; @@ -9828,11 +9834,10 @@ qemuDomainPrepareDiskSourceLegacy(virDomainDiskDef *disk, disk->info.alias) < 0) return -1; - if (qemuDomainPrepareStorageSourcePR(disk->src, priv, disk->info.alias) < 0) + if (qemuDomainPrepareStorageSourcePR(disk->src, vm, disk->info.alias) < 0) return -1; - if (qemuDomainPrepareStorageSourceTLS(disk->src, cfg, disk->info.alias, - priv) < 0) + if (qemuDomainPrepareStorageSourceTLS(disk->src, vm, disk->info.alias) < 0) return -1; return 0; @@ -9841,8 +9846,9 @@ qemuDomainPrepareDiskSourceLegacy(virDomainDiskDef *disk, static int qemuDomainPrepareStorageSourceFDs(virStorageSource *src, - qemuDomainObjPrivate *priv) + virDomainObj *vm) { + qemuDomainObjPrivate *priv = vm->privateData; qemuDomainStorageSourcePrivate *srcpriv = NULL; virStorageType actualType = virStorageSourceGetActualType(src); virDomainFDTuple *fdt = NULL; @@ -9898,16 +9904,17 @@ static int qemuDomainPrepareStorageSourceBlockdevNodename(virDomainDiskDef *disk, virStorageSource *src, const char *nodenameprefix, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg) + virDomainObj *vm) { + qemuDomainObjPrivate *priv = vm->privateData; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver); char *nodestorage = g_strdup_printf("%s-storage", nodenameprefix); const char *encryptionAlias = nodestorage; /* qemuBlockStorageSourceSetStorageNodename steals 'nodestorage' */ qemuBlockStorageSourceSetStorageNodename(src, nodestorage); - if (qemuDomainPrepareStorageSourceFDs(src, priv) < 0) + if (qemuDomainPrepareStorageSourceFDs(src, vm) < 0) return -1; if (qemuBlockStorageSourceNeedsFormatLayer(src, priv->qemuCaps)) { @@ -9933,18 +9940,17 @@ qemuDomainPrepareStorageSourceBlockdevNodename(virDomainDiskDef *disk, qemuDomainPrepareStorageSourceConfig(src, cfg); qemuDomainPrepareDiskSourceData(disk, src); - if (!qemuDomainPrepareStorageSourceNbdkit(src, cfg, nodestorage, priv)) { + if (!qemuDomainPrepareStorageSourceNbdkit(src, nodestorage, vm)) { /* If we're using nbdkit to serve the storage source, we don't pass * authentication secrets to qemu, but will pass them to nbdkit instead */ if (qemuDomainSecretStorageSourcePrepareAuth(priv, src, nodestorage) < 0) return -1; } - if (qemuDomainPrepareStorageSourcePR(src, priv, nodestorage) < 0) + if (qemuDomainPrepareStorageSourcePR(src, vm, nodestorage) < 0) return -1; - if (qemuDomainPrepareStorageSourceTLS(src, cfg, nodestorage, - priv) < 0) + if (qemuDomainPrepareStorageSourceTLS(src, vm, nodestorage) < 0) return -1; if (qemuDomainPrepareStorageSourceNFS(src) < 0) @@ -9973,24 +9979,24 @@ qemuDomainPrepareThrottleFilterBlockdev(virDomainThrottleFilterDef *filter, int qemuDomainPrepareStorageSourceBlockdev(virDomainDiskDef *disk, virStorageSource *src, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg) + virDomainObj *vm) { + qemuDomainObjPrivate *priv = vm->privateData; g_autofree char *nodenameprefix = NULL; src->id = qemuDomainStorageIDNew(priv); nodenameprefix = g_strdup_printf("libvirt-%u", src->id); - return qemuDomainPrepareStorageSourceBlockdevNodename(disk, src, nodenameprefix, priv, cfg); + return qemuDomainPrepareStorageSourceBlockdevNodename(disk, src, nodenameprefix, vm); } static int qemuDomainPrepareDiskSourceBlockdev(virDomainDiskDef *disk, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg) + virDomainObj *vm) { + qemuDomainObjPrivate *priv = vm->privateData; qemuDomainDiskPrivate *diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); virStorageSource *n; size_t i; @@ -10000,11 +10006,11 @@ qemuDomainPrepareDiskSourceBlockdev(virDomainDiskDef *disk, diskPriv->nodeCopyOnRead = g_strdup_printf("libvirt-CoR-%s", disk->dst); for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) { - if (qemuDomainPrepareStorageSourceBlockdev(disk, n, priv, cfg) < 0) + if (qemuDomainPrepareStorageSourceBlockdev(disk, n, vm) < 0) return -1; if (n->dataFileStore && - qemuDomainPrepareStorageSourceBlockdev(disk, n->dataFileStore, priv, cfg) < 0) + qemuDomainPrepareStorageSourceBlockdev(disk, n->dataFileStore, vm) < 0) return -1; } @@ -10018,8 +10024,7 @@ qemuDomainPrepareDiskSourceBlockdev(virDomainDiskDef *disk, int qemuDomainPrepareDiskSource(virDomainDiskDef *disk, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg) + virDomainObj *vm) { /* Nothing to prepare as it will use -chardev instead * of -blockdev/-drive option. */ @@ -10040,10 +10045,10 @@ qemuDomainPrepareDiskSource(virDomainDiskDef *disk, } if (!qemuDiskBusIsSD(disk->bus)) { - if (qemuDomainPrepareDiskSourceBlockdev(disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSourceBlockdev(disk, vm) < 0) return -1; } else { - if (qemuDomainPrepareDiskSourceLegacy(disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSourceLegacy(disk, vm) < 0) return -1; } @@ -10451,8 +10456,7 @@ qemuDomainDefHasManagedPR(virDomainObj *vm) * 'libvirt-pflash1-format' for pflash1. */ int -qemuDomainInitializePflashStorageSource(virDomainObj *vm, - virQEMUDriverConfig *cfg) +qemuDomainInitializePflashStorageSource(virDomainObj *vm) { qemuDomainObjPrivate *priv = vm->privateData; virDomainDef *def = vm->def; @@ -10476,8 +10480,7 @@ qemuDomainInitializePflashStorageSource(virDomainObj *vm, if (qemuDomainPrepareStorageSourceBlockdevNodename(NULL, def->os.loader->nvram, "libvirt-pflash1", - priv, - cfg) < 0) + vm) < 0) return -1; } diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index c8f0d2326c..a3ce85bc8e 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -709,8 +709,7 @@ qemuDomainRemoveInactiveLocked(virDomainObj *vm); void qemuDomainSetFakeReboot(virDomainObj *vm, bool value); -int qemuDomainCheckDiskStartupPolicy(virQEMUDriver *driver, - virDomainObj *vm, +int qemuDomainCheckDiskStartupPolicy(virDomainObj *vm, size_t diskIndex, bool cold_boot); @@ -767,8 +766,7 @@ int qemuDomainStorageSourceAccessAllow(virQEMUDriver *driver, int qemuDomainPrepareStorageSourceBlockdev(virDomainDiskDef *disk, virStorageSource *src, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg); + virDomainObj *vm); void qemuDomainCleanupAdd(virDomainObj *vm, qemuDomainCleanupCallback cb); @@ -1031,8 +1029,7 @@ qemuDomainValidateStorageSource(virStorageSource *src, int qemuDomainPrepareDiskSource(virDomainDiskDef *disk, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg); + virDomainObj *vm); bool qemuDomainDiskCachemodeFlags(virDomainDiskCache cachemode, @@ -1070,8 +1067,7 @@ qemuDomainMakeCPUMigratable(virArch arch, virCPUDef *origCPU); int -qemuDomainInitializePflashStorageSource(virDomainObj *vm, - virQEMUDriverConfig *cfg); +qemuDomainInitializePflashStorageSource(virDomainObj *vm); bool qemuDomainDiskHasLatencyHistogram(virDomainDiskDef *disk); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0cfd42b0e1..95c843451e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14481,7 +14481,7 @@ qemuDomainBlockCopyCommon(virDomainObj *vm, /* we must initialize XML-provided chain prior to detecting to keep semantics * with VM startup */ for (n = mirror; virStorageSourceIsBacking(n); n = n->backingStore) { - if (qemuDomainPrepareStorageSourceBlockdev(disk, n, priv, cfg) < 0) + if (qemuDomainPrepareStorageSourceBlockdev(disk, n, vm) < 0) goto endjob; } diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 9439948089..458b1d1eca 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -608,8 +608,6 @@ qemuDomainChangeEjectableMedia(virQEMUDriver *driver, virStorageSource *newsrc, bool force) { - g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); - qemuDomainObjPrivate *priv = vm->privateData; virStorageSource *oldsrc = disk->src; qemuDomainDiskPrivate *diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); int rc; @@ -628,7 +626,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriver *driver, if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL) < 0) goto rollback; - if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSource(disk, vm) < 0) goto rollback; if (qemuDomainStorageSourceChainAccessAllow(driver, vm, newsrc) < 0) @@ -1072,7 +1070,7 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver, goto cleanup; if (!virStorageSourceIsEmpty(disk->src)) { - if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSource(disk, vm) < 0) goto cleanup; if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL) < 0) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index a921bbcea8..612698463d 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6840,10 +6840,7 @@ qemuProcessPrepareDeviceBootorder(virDomainDef *def) static int -qemuProcessPrepareDomainStorage(virQEMUDriver *driver, - virDomainObj *vm, - qemuDomainObjPrivate *priv, - virQEMUDriverConfig *cfg, +qemuProcessPrepareDomainStorage(virDomainObj *vm, unsigned int flags) { size_t i; @@ -6854,14 +6851,14 @@ qemuProcessPrepareDomainStorage(virQEMUDriver *driver, virDomainDiskDef *disk = vm->def->disks[idx]; if (virDomainDiskTranslateSourcePool(disk) < 0) { - if (qemuDomainCheckDiskStartupPolicy(driver, vm, idx, cold_boot) < 0) + if (qemuDomainCheckDiskStartupPolicy(vm, idx, cold_boot) < 0) return -1; /* disk source was dropped */ continue; } - if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0) + if (qemuDomainPrepareDiskSource(disk, vm) < 0) return -1; } @@ -7122,7 +7119,7 @@ qemuProcessPrepareDomain(virQEMUDriver *driver, return -1; VIR_DEBUG("Setting up storage"); - if (qemuProcessPrepareDomainStorage(driver, vm, priv, cfg, flags) < 0) + if (qemuProcessPrepareDomainStorage(vm, flags) < 0) return -1; VIR_DEBUG("Setting up host devices"); @@ -7144,7 +7141,7 @@ qemuProcessPrepareDomain(virQEMUDriver *driver, VIR_DEBUG("Prepare bios/uefi paths"); if (qemuFirmwareFillDomain(driver, vm->def, false) < 0) return -1; - if (qemuDomainInitializePflashStorageSource(vm, cfg) < 0) + if (qemuDomainInitializePflashStorageSource(vm) < 0) return -1; VIR_DEBUG("Preparing external devices"); @@ -7436,7 +7433,7 @@ qemuProcessPrepareHostStorage(virQEMUDriver *driver, else if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL) >= 0) continue; - if (qemuDomainCheckDiskStartupPolicy(driver, vm, idx, cold_boot) >= 0) + if (qemuDomainCheckDiskStartupPolicy(vm, idx, cold_boot) >= 0) continue; return -1; diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c index 82ae38ca29..e71282d559 100644 --- a/src/qemu/qemu_snapshot.c +++ b/src/qemu/qemu_snapshot.c @@ -1257,12 +1257,10 @@ qemuSnapshotDiskBitmapsPropagate(qemuSnapshotDiskData *dd, static int qemuSnapshotDiskPrepareOneBlockdev(virDomainObj *vm, qemuSnapshotDiskData *dd, - virQEMUDriverConfig *cfg, bool reuse, GHashTable *blockNamedNodeData, virDomainAsyncJob asyncJob) { - qemuDomainObjPrivate *priv = vm->privateData; g_autoptr(virStorageSource) terminator = NULL; int rc; @@ -1271,7 +1269,7 @@ qemuSnapshotDiskPrepareOneBlockdev(virDomainObj *vm, terminator = virStorageSourceNew(); if (qemuDomainPrepareStorageSourceBlockdev(dd->disk, dd->src, - priv, cfg) < 0) + vm) < 0) return -1; if (!(dd->crdata = qemuBuildStorageSourceChainAttachPrepareBlockdevTop(dd->src, @@ -1371,7 +1369,7 @@ qemuSnapshotDiskPrepareOne(qemuSnapshotDiskContext *snapctxt, dd->prepared = true; - if (qemuSnapshotDiskPrepareOneBlockdev(vm, dd, snapctxt->cfg, reuse, + if (qemuSnapshotDiskPrepareOneBlockdev(vm, dd, reuse, blockNamedNodeData, snapctxt->asyncJob) < 0) return -1; -- 2.53.0