提交 7921e9b0 编写于 作者: P Peter Krempa

qemu: Remove cleanup label in qemuDomainSnapshotPrepareDiskExternal

Refactor the code to avoid having a cleanup label. This will simplify
the change necessary when restricting this check in an upcoming patch.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 6129a04d
......@@ -14983,8 +14983,9 @@ qemuDomainSnapshotPrepareDiskExternal(virDomainDiskDefPtr disk,
bool active,
bool reuse)
{
int ret = -1;
struct stat st;
int err;
int rc;
if (disk->src->readonly) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
......@@ -15010,31 +15011,32 @@ qemuDomainSnapshotPrepareDiskExternal(virDomainDiskDefPtr disk,
if (virStorageFileInit(snapdisk->src) < 0)
return -1;
if (virStorageFileStat(snapdisk->src, &st) < 0) {
if (errno != ENOENT) {
virReportSystemError(errno,
rc = virStorageFileStat(snapdisk->src, &st);
err = errno;
virStorageFileDeinit(snapdisk->src);
if (rc < 0) {
if (err != ENOENT) {
virReportSystemError(err,
_("unable to stat for disk %s: %s"),
snapdisk->name, snapdisk->src->path);
goto cleanup;
return -1;
} else if (reuse) {
virReportSystemError(errno,
virReportSystemError(err,
_("missing existing file for disk %s: %s"),
snapdisk->name, snapdisk->src->path);
goto cleanup;
return -1;
}
} else if (!S_ISBLK(st.st_mode) && st.st_size && !reuse) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("external snapshot file for disk %s already "
"exists and is not a block device: %s"),
snapdisk->name, snapdisk->src->path);
goto cleanup;
return -1;
}
ret = 0;
cleanup:
virStorageFileDeinit(snapdisk->src);
return ret;
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册