You need to sign in or sign up before continuing.
提交 b571e7ba 编写于 作者: P Peter Krempa

qemu: Assign managed PR path when preparing storage source

Rather than always checking which path to use pre-assign it when
preparing storage source.

This reduces the need to pass 'vm' around too much. For later use the
path can be retrieved from the status XML.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
上级 e31f4904
...@@ -9717,7 +9717,6 @@ qemuBuildPanicCommandLine(virCommandPtr cmd, ...@@ -9717,7 +9717,6 @@ qemuBuildPanicCommandLine(virCommandPtr cmd,
/** /**
* qemuBuildPRManagerInfoProps: * qemuBuildPRManagerInfoProps:
* @vm: domain object
* @disk: disk definition * @disk: disk definition
* @propsret: Returns JSON object containing properties of the pr-manager-helper object * @propsret: Returns JSON object containing properties of the pr-manager-helper object
* @aliasret: alias of the pr-manager-helper object * @aliasret: alias of the pr-manager-helper object
...@@ -9728,12 +9727,10 @@ qemuBuildPanicCommandLine(virCommandPtr cmd, ...@@ -9728,12 +9727,10 @@ qemuBuildPanicCommandLine(virCommandPtr cmd,
* -1 on failure (with error message set). * -1 on failure (with error message set).
*/ */
int int
qemuBuildPRManagerInfoProps(virDomainObjPtr vm, qemuBuildPRManagerInfoProps(const virDomainDiskDef *disk,
const virDomainDiskDef *disk,
virJSONValuePtr *propsret, virJSONValuePtr *propsret,
char **aliasret) char **aliasret)
{ {
char *socketPath = NULL;
char *alias = NULL; char *alias = NULL;
int ret = -1; int ret = -1;
...@@ -9743,9 +9740,6 @@ qemuBuildPRManagerInfoProps(virDomainObjPtr vm, ...@@ -9743,9 +9740,6 @@ qemuBuildPRManagerInfoProps(virDomainObjPtr vm,
if (!disk->src->pr) if (!disk->src->pr)
return 0; return 0;
if (!(socketPath = qemuDomainGetPRSocketPath(vm, disk->src->pr)))
return ret;
if (virStoragePRDefIsManaged(disk->src->pr)) { if (virStoragePRDefIsManaged(disk->src->pr)) {
if (VIR_STRDUP(alias, qemuDomainGetManagedPRAlias()) < 0) if (VIR_STRDUP(alias, qemuDomainGetManagedPRAlias()) < 0)
goto cleanup; goto cleanup;
...@@ -9755,7 +9749,7 @@ qemuBuildPRManagerInfoProps(virDomainObjPtr vm, ...@@ -9755,7 +9749,7 @@ qemuBuildPRManagerInfoProps(virDomainObjPtr vm,
} }
if (virJSONValueObjectCreate(propsret, if (virJSONValueObjectCreate(propsret,
"s:path", socketPath, "s:path", disk->src->pr->path,
NULL) < 0) NULL) < 0)
goto cleanup; goto cleanup;
...@@ -9763,14 +9757,12 @@ qemuBuildPRManagerInfoProps(virDomainObjPtr vm, ...@@ -9763,14 +9757,12 @@ qemuBuildPRManagerInfoProps(virDomainObjPtr vm,
ret = 0; ret = 0;
cleanup: cleanup:
VIR_FREE(alias); VIR_FREE(alias);
VIR_FREE(socketPath);
return ret; return ret;
} }
static int static int
qemuBuildMasterPRCommandLine(virDomainObjPtr vm, qemuBuildMasterPRCommandLine(virCommandPtr cmd,
virCommandPtr cmd,
const virDomainDef *def) const virDomainDef *def)
{ {
size_t i; size_t i;
...@@ -9790,7 +9782,7 @@ qemuBuildMasterPRCommandLine(virDomainObjPtr vm, ...@@ -9790,7 +9782,7 @@ qemuBuildMasterPRCommandLine(virDomainObjPtr vm,
managedAdded = true; managedAdded = true;
} }
if (qemuBuildPRManagerInfoProps(vm, disk, &props, &alias) < 0) if (qemuBuildPRManagerInfoProps(disk, &props, &alias) < 0)
goto cleanup; goto cleanup;
if (!props) if (!props)
...@@ -9984,7 +9976,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, ...@@ -9984,7 +9976,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
if (qemuBuildMasterKeyCommandLine(cmd, priv) < 0) if (qemuBuildMasterKeyCommandLine(cmd, priv) < 0)
goto error; goto error;
if (qemuBuildMasterPRCommandLine(vm, cmd, def) < 0) if (qemuBuildMasterPRCommandLine(cmd, def) < 0)
goto error; goto error;
if (enableFips) if (enableFips)
......
...@@ -55,8 +55,7 @@ virCommandPtr qemuBuildCommandLine(virQEMUDriverPtr driver, ...@@ -55,8 +55,7 @@ virCommandPtr qemuBuildCommandLine(virQEMUDriverPtr driver,
int **nicindexes); int **nicindexes);
/* Generate the object properties for pr-manager */ /* Generate the object properties for pr-manager */
int qemuBuildPRManagerInfoProps(virDomainObjPtr vm, int qemuBuildPRManagerInfoProps(const virDomainDiskDef *disk,
const virDomainDiskDef *disk,
virJSONValuePtr *propsret, virJSONValuePtr *propsret,
char **alias); char **alias);
......
...@@ -11930,6 +11930,22 @@ qemuDomainPrepareDiskCachemode(virDomainDiskDefPtr disk) ...@@ -11930,6 +11930,22 @@ qemuDomainPrepareDiskCachemode(virDomainDiskDefPtr disk)
} }
static int
qemuDomainPrepareStorageSourcePR(virStorageSourcePtr src,
qemuDomainObjPrivatePtr priv)
{
if (!src->pr)
return 0;
if (virStoragePRDefIsManaged(src->pr)) {
if (!(src->pr->path = qemuDomainGetManagedPRSocketPath(priv)))
return -1;
}
return 0;
}
int int
qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk, qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk,
qemuDomainObjPrivatePtr priv, qemuDomainObjPrivatePtr priv,
...@@ -11946,6 +11962,9 @@ qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk, ...@@ -11946,6 +11962,9 @@ qemuDomainPrepareDiskSource(virDomainDiskDefPtr disk,
if (qemuDomainPrepareDiskSourceChain(disk, NULL, cfg, priv->qemuCaps) < 0) if (qemuDomainPrepareDiskSourceChain(disk, NULL, cfg, priv->qemuCaps) < 0)
return -1; return -1;
if (qemuDomainPrepareStorageSourcePR(disk->src, priv) < 0)
return -1;
return 0; return 0;
} }
...@@ -12051,22 +12070,12 @@ qemuProcessEventFree(struct qemuProcessEvent *event) ...@@ -12051,22 +12070,12 @@ qemuProcessEventFree(struct qemuProcessEvent *event)
char * char *
qemuDomainGetPRSocketPath(virDomainObjPtr vm, qemuDomainGetManagedPRSocketPath(qemuDomainObjPrivatePtr priv)
virStoragePRDefPtr pr)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData;
const char *defaultAlias = NULL;
char *ret = NULL; char *ret = NULL;
if (!pr) ignore_value(virAsprintf(&ret, "%s/%s.sock", priv->libDir,
return NULL; qemuDomainGetManagedPRAlias()));
if (virStoragePRDefIsManaged(pr)) {
defaultAlias = qemuDomainGetManagedPRAlias();
ignore_value(virAsprintf(&ret, "%s/%s.sock", priv->libDir, defaultAlias));
} else {
ignore_value(VIR_STRDUP(ret, pr->path));
}
return ret; return ret;
} }
...@@ -1006,7 +1006,6 @@ qemuDomainDiskCachemodeFlags(int cachemode, ...@@ -1006,7 +1006,6 @@ qemuDomainDiskCachemodeFlags(int cachemode,
bool *direct, bool *direct,
bool *noflush); bool *noflush);
char * qemuDomainGetPRSocketPath(virDomainObjPtr vm, char * qemuDomainGetManagedPRSocketPath(qemuDomainObjPrivatePtr priv);
virStoragePRDefPtr pr);
#endif /* __QEMU_DOMAIN_H__ */ #endif /* __QEMU_DOMAIN_H__ */
...@@ -401,7 +401,7 @@ qemuMaybeBuildPRManagerInfoProps(virDomainObjPtr vm, ...@@ -401,7 +401,7 @@ qemuMaybeBuildPRManagerInfoProps(virDomainObjPtr vm,
return 0; return 0;
} }
return qemuBuildPRManagerInfoProps(vm, disk, propsret, aliasret); return qemuBuildPRManagerInfoProps(disk, propsret, aliasret);
} }
......
...@@ -2659,7 +2659,7 @@ qemuProcessStartPRDaemon(virDomainObjPtr vm, ...@@ -2659,7 +2659,7 @@ qemuProcessStartPRDaemon(virDomainObjPtr vm,
if ((pidfd = virPidFileAcquirePath(pidfile, false, -1)) < 0) if ((pidfd = virPidFileAcquirePath(pidfile, false, -1)) < 0)
goto cleanup; goto cleanup;
if (!(socketPath = qemuDomainGetPRSocketPath(vm, disk->src->pr))) if (!(socketPath = qemuDomainGetManagedPRSocketPath(priv)))
goto cleanup; goto cleanup;
/* Remove stale socket */ /* Remove stale socket */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册