* @vm: domain object
* @disk: disk definition
* @disksrc: source to determine the chain for, may be NULL
- * @report_broken: report broken chain verbosely
*
* Prepares and initializes the backing chain of disk @disk. In cases where
* a new source is to be associated with @disk the @disksrc parameter can be
- * used to override the source. If @report_broken is true missing images
- * in the backing chain are reported.
+ * used to override the source.
*/
int
qemuDomainDetermineDiskChain(virQEMUDriver *driver,
virDomainObj *vm,
virDomainDiskDef *disk,
- virStorageSource *disksrc,
- bool report_broken)
+ virStorageSource *disksrc)
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
virStorageSource *src; /* iterator for the backing chain declared in XML */
disksrc->format < VIR_STORAGE_FILE_BACKING) {
if (!virFileExists(disksrc->path)) {
- if (report_broken)
- virStorageSourceReportBrokenChain(errno, disksrc, disksrc);
+ virStorageSourceReportBrokenChain(errno, disksrc, disksrc);
return -1;
}
src = disksrc;
/* skip to the end of the chain if there is any */
while (virStorageSourceHasBacking(src)) {
- if (report_broken) {
- int rv = virStorageSourceSupportsAccess(src);
+ int rv = virStorageSourceSupportsAccess(src);
- if (rv < 0)
- return -1;
-
- if (rv > 0) {
- if (qemuDomainStorageFileInit(driver, vm, src, disksrc) < 0)
- return -1;
+ if (rv < 0)
+ return -1;
- if (virStorageSourceAccess(src, F_OK) < 0) {
- virStorageSourceReportBrokenChain(errno, src, disksrc);
- virStorageSourceDeinit(src);
- return -1;
- }
+ if (rv > 0) {
+ if (qemuDomainStorageFileInit(driver, vm, src, disksrc) < 0)
+ return -1;
+ if (virStorageSourceAccess(src, F_OK) < 0) {
+ virStorageSourceReportBrokenChain(errno, src, disksrc);
virStorageSourceDeinit(src);
+ return -1;
}
+
+ virStorageSourceDeinit(src);
}
src = src->backingStore;
}
if (virStorageSourceGetMetadata(src, uid, gid,
QEMU_DOMAIN_STORAGE_SOURCE_CHAIN_MAX_DEPTH,
- report_broken) < 0)
+ true) < 0)
return -1;
for (n = src->backingStore; virStorageSourceIsBacking(n); n = n->backingStore) {
if (mirror_reuse &&
mirror->format >= VIR_STORAGE_FILE_BACKING &&
mirror->backingStore == NULL &&
- qemuDomainDetermineDiskChain(driver, vm, disk, mirror, true) < 0)
+ qemuDomainDetermineDiskChain(driver, vm, disk, mirror) < 0)
goto endjob;
if (qemuDomainStorageSourceChainAccessAllow(driver, vm, mirror) < 0)
if (virDomainDiskTranslateSourcePool(disk) < 0)
goto cleanup;
- if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL, true) < 0)
+ if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL) < 0)
goto cleanup;
if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
if (virDomainDiskTranslateSourcePool(disk) < 0)
goto cleanup;
- if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL, true) < 0)
+ if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL) < 0)
goto cleanup;
for (i = 0; i < vm->def->ndisks; i++) {
if (qemuDomainDiskIsMissingLocalOptional(disk) && cold_boot)
VIR_INFO("optional disk '%s' source file is missing, "
"skip checking disk chain", disk->dst);
- else if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL, true) >= 0)
+ else if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL) >= 0)
continue;
if (qemuDomainCheckDiskStartupPolicy(driver, vm, idx, cold_boot) >= 0)