mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-09 01:04:59 +00:00
Unify domain name shortening
Add virDomainObjGetShortName() and use it. For now that's used in one place, but we should expose it so that future patches can use it. Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
d3d4fb4b18
commit
a042275a39
@ -24307,3 +24307,23 @@ virDomainDefHasMemballoon(const virDomainDef *def)
|
|||||||
return def->memballoon &&
|
return def->memballoon &&
|
||||||
def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_NONE;
|
def->memballoon->model != VIR_DOMAIN_MEMBALLOON_MODEL_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virDomainObjGetShortName:
|
||||||
|
* @vm: Machine for which to get a name
|
||||||
|
* @unique: Make sure the name is unique (use id as well)
|
||||||
|
*
|
||||||
|
* Shorten domain name to avoid possible path length limitations.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
virDomainObjGetShortName(virDomainObjPtr vm)
|
||||||
|
{
|
||||||
|
const int dommaxlen = 20;
|
||||||
|
char *ret = NULL;
|
||||||
|
|
||||||
|
ignore_value(virAsprintf(&ret, "%d-%.*s",
|
||||||
|
vm->def->id, dommaxlen, vm->def->name));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -3162,4 +3162,6 @@ int virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def,
|
|||||||
|
|
||||||
bool virDomainDefHasMemballoon(const virDomainDef *def) ATTRIBUTE_NONNULL(1);
|
bool virDomainDefHasMemballoon(const virDomainDef *def) ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
|
char *virDomainObjGetShortName(virDomainObjPtr vm);
|
||||||
|
|
||||||
#endif /* __DOMAIN_CONF_H */
|
#endif /* __DOMAIN_CONF_H */
|
||||||
|
@ -400,6 +400,7 @@ virDomainObjGetDefs;
|
|||||||
virDomainObjGetMetadata;
|
virDomainObjGetMetadata;
|
||||||
virDomainObjGetOneDef;
|
virDomainObjGetOneDef;
|
||||||
virDomainObjGetPersistentDef;
|
virDomainObjGetPersistentDef;
|
||||||
|
virDomainObjGetShortName;
|
||||||
virDomainObjGetState;
|
virDomainObjGetState;
|
||||||
virDomainObjNew;
|
virDomainObjNew;
|
||||||
virDomainObjParseNode;
|
virDomainObjParseNode;
|
||||||
|
@ -787,39 +787,31 @@ qemuDomainSetPrivatePathsOld(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The newer version uses a magic number for one reason. The thing is
|
|
||||||
* that we need a bit shorter name in order to be able to connect to
|
|
||||||
* it using UNIX sockets which have path length limitation. Since the
|
|
||||||
* length is not guaranteed to be constant and similarly the lib
|
|
||||||
* directory is configurable and so on, we need to rather choose an
|
|
||||||
* arbitrary maximum length of the domain name that will be used.
|
|
||||||
* Thanks to the fact that we are now saving it in the status XML, we
|
|
||||||
* can change it later on whenever we feel like so.
|
|
||||||
*/
|
|
||||||
int
|
int
|
||||||
qemuDomainSetPrivatePaths(virQEMUDriverPtr driver,
|
qemuDomainSetPrivatePaths(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm)
|
virDomainObjPtr vm)
|
||||||
{
|
{
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
const int dommaxlen = 20;
|
char *domname = virDomainObjGetShortName(vm);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
if (!domname)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
if (!priv->libDir &&
|
if (!priv->libDir &&
|
||||||
virAsprintf(&priv->libDir, "%s/domain-%d-%.*s",
|
virAsprintf(&priv->libDir, "%s/domain-%s", cfg->libDir, domname) < 0)
|
||||||
cfg->libDir, vm->def->id, dommaxlen, vm->def->name) < 0)
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!priv->channelTargetDir &&
|
if (!priv->channelTargetDir &&
|
||||||
virAsprintf(&priv->channelTargetDir, "%s/domain-%d-%.*s",
|
virAsprintf(&priv->channelTargetDir, "%s/domain-%s",
|
||||||
cfg->channelTargetDir, vm->def->id,
|
cfg->channelTargetDir, domname) < 0)
|
||||||
dommaxlen, vm->def->name) < 0)
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
virObjectUnref(cfg);
|
virObjectUnref(cfg);
|
||||||
|
VIR_FREE(domname);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user