提交 318d807a 编写于 作者: N Nikolay Shirokovskiy

qemu: don't log error for missing optional storage sources on stats

Every time we call all domain stats for inactive domain with
unavailable storage source we get error message in logs [1]. It's a bit noisy.
While it's arguable whether we need such message or not for mandatory
disks we would like not to see messages for optional disks. Let's
filter at least for cases of local files. Fixing other cases would
require passing flag down the stack to .backendInit of storage
which is ugly.

Stats for active domain are fine because we either drop disks
with unavailable sources or clean source which is handled
by virStorageSourceIsEmpty in qemuDomainGetStatsOneBlockFallback.

We have these logs for successful stats since 25aa7035 (version 1.2.15)
which in turn fixes 596a1371 (version 1.2.12 )which added substantial
stats for offline disks.

[1] error message example:
qemuOpenFileAs:3324 : Failed to open file '/path/to/optional/disk': No such file or directory
Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
上级 dfbd7315
......@@ -13704,3 +13704,12 @@ qemuDomainIsUsingNoShutdown(qemuDomainObjPrivatePtr priv)
{
return priv->monJSON && priv->allowReboot == VIR_TRISTATE_BOOL_YES;
}
bool
qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk)
{
return disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_OPTIONAL &&
virStorageSourceIsLocalStorage(disk->src) && disk->src->path &&
!virFileExists(disk->src->path);
}
......@@ -1095,4 +1095,7 @@ qemuDomainRunningReasonToResumeEvent(virDomainRunningReason reason);
bool
qemuDomainIsUsingNoShutdown(qemuDomainObjPrivatePtr priv);
bool
qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk);
#endif /* LIBVIRT_QEMU_DOMAIN_H */
......@@ -20720,6 +20720,20 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk,
const char *backendstoragealias;
int ret = -1;
/*
* This helps to keep logs clean from error messages on getting stats
* for optional disk with nonexistent source file. We won't get any
* stats for such a disk anyway in below code.
*/
if (!virDomainObjIsActive(dom) &&
qemuDomainDiskIsMissingLocalOptional(disk)) {
VIR_INFO("optional disk '%s' source file is missing, "
"skip getting stats", disk->dst);
return qemuDomainGetStatsBlockExportHeader(disk, disk->src, *recordnr,
records, nrecords);
}
for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
if (blockdev) {
frontendalias = QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册