The virDomainFSInfoFormat() and qemuAgentFSInfoToPublic() function implementations are now shared between the qemu and the bhyve driver, so move them to a common place to avoid code duplication.
Signed-off-by: Roman Bogorodskiy <[email protected]> --- src/bhyve/bhyve_driver.c | 70 ------------------------------------- src/hypervisor/qemu_agent.c | 70 +++++++++++++++++++++++++++++++++++++ src/hypervisor/qemu_agent.h | 5 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_driver.c | 70 ------------------------------------- 5 files changed, 76 insertions(+), 140 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index f93e6c7b68..f1ec781173 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2332,76 +2332,6 @@ bhyveDomainGetFSInfoAgent(virDomainObj *vm, return ret; } -static virDomainFSInfoPtr -qemuAgentFSInfoToPublic(qemuAgentFSInfo *agent, - virDomainDef *vmdef) -{ - virDomainFSInfoPtr ret = NULL; - size_t i; - - ret = g_new0(virDomainFSInfo, 1); - - ret->mountpoint = g_strdup(agent->mountpoint); - ret->name = g_strdup(agent->name); - ret->fstype = g_strdup(agent->fstype); - - if (agent->disks) - ret->devAlias = g_new0(char *, agent->ndisks); - - for (i = 0; i < agent->ndisks; i++) { - qemuAgentDiskAddress *agentdisk = agent->disks[i]; - virDomainDiskDef *diskDef; - - diskDef = virDomainDiskByAddress(vmdef, - &agentdisk->pci_controller, - agentdisk->ccw_addr, - agentdisk->bus, - agentdisk->target, - agentdisk->unit); - if (diskDef != NULL) - ret->devAlias[ret->ndevAlias++] = g_strdup(diskDef->dst); - else - VIR_DEBUG("Missing target name for '%s'.", ret->mountpoint); - } - - return ret; -} - -/* Returns: 0 on success - * -1 otherwise - */ -static int -virDomainFSInfoFormat(qemuAgentFSInfo **agentinfo, - int nagentinfo, - virDomainDef *vmdef, - virDomainFSInfoPtr **info) -{ - int ret = -1; - virDomainFSInfoPtr *info_ret = NULL; - size_t i; - - info_ret = g_new0(virDomainFSInfoPtr, nagentinfo); - - for (i = 0; i < nagentinfo; i++) { - if (!(info_ret[i] = qemuAgentFSInfoToPublic(agentinfo[i], vmdef))) - goto cleanup; - } - - *info = g_steal_pointer(&info_ret); - ret = nagentinfo; - - cleanup: - if (info_ret) { - for (i = 0; i < nagentinfo; i++) { - /* if there was an error, free any memory we've allocated for the - * return value */ - virDomainFSInfoFree(info_ret[i]); - } - g_free(info_ret); - } - return ret; -} - static int bhyveDomainGetFSInfo(virDomainPtr dom, virDomainFSInfoPtr **info, diff --git a/src/hypervisor/qemu_agent.c b/src/hypervisor/qemu_agent.c index 70f0cde5dd..927aa5e10e 100644 --- a/src/hypervisor/qemu_agent.c +++ b/src/hypervisor/qemu_agent.c @@ -2611,3 +2611,73 @@ qemuAgentGetLoadAvg(qemuAgent *agent, return 0; } + +static virDomainFSInfoPtr +qemuAgentFSInfoToPublic(qemuAgentFSInfo *agent, + virDomainDef *vmdef) +{ + virDomainFSInfoPtr ret = NULL; + size_t i; + + ret = g_new0(virDomainFSInfo, 1); + + ret->mountpoint = g_strdup(agent->mountpoint); + ret->name = g_strdup(agent->name); + ret->fstype = g_strdup(agent->fstype); + + if (agent->disks) + ret->devAlias = g_new0(char *, agent->ndisks); + + for (i = 0; i < agent->ndisks; i++) { + qemuAgentDiskAddress *agentdisk = agent->disks[i]; + virDomainDiskDef *diskDef; + + diskDef = virDomainDiskByAddress(vmdef, + &agentdisk->pci_controller, + agentdisk->ccw_addr, + agentdisk->bus, + agentdisk->target, + agentdisk->unit); + if (diskDef != NULL) + ret->devAlias[ret->ndevAlias++] = g_strdup(diskDef->dst); + else + VIR_DEBUG("Missing target name for '%s'.", ret->mountpoint); + } + + return ret; +} + +/* Returns: 0 on success + * -1 otherwise + */ +int +virDomainFSInfoFormat(qemuAgentFSInfo **agentinfo, + int nagentinfo, + virDomainDef *vmdef, + virDomainFSInfoPtr **info) +{ + int ret = -1; + virDomainFSInfoPtr *info_ret = NULL; + size_t i; + + info_ret = g_new0(virDomainFSInfoPtr, nagentinfo); + + for (i = 0; i < nagentinfo; i++) { + if (!(info_ret[i] = qemuAgentFSInfoToPublic(agentinfo[i], vmdef))) + goto cleanup; + } + + *info = g_steal_pointer(&info_ret); + ret = nagentinfo; + + cleanup: + if (info_ret) { + for (i = 0; i < nagentinfo; i++) { + /* if there was an error, free any memory we've allocated for the + * return value */ + virDomainFSInfoFree(info_ret[i]); + } + g_free(info_ret); + } + return ret; +} diff --git a/src/hypervisor/qemu_agent.h b/src/hypervisor/qemu_agent.h index 9117d3743c..2ed1e040be 100644 --- a/src/hypervisor/qemu_agent.h +++ b/src/hypervisor/qemu_agent.h @@ -196,3 +196,8 @@ int qemuAgentGetLoadAvg(qemuAgent *agent, double *load5m, double *load15m, bool report_unsupported); + +int virDomainFSInfoFormat(qemuAgentFSInfo **agentinfo, + int nagentinfo, + virDomainDef *vmdef, + virDomainFSInfoPtr **info); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index a76da45fb9..f4c392d893 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1740,6 +1740,7 @@ qemuAgentSSHGetAuthorizedKeys; qemuAgentSSHRemoveAuthorizedKeys; qemuAgentSuspend; qemuAgentUpdateCPUInfo; +virDomainFSInfoFormat; # hypervisor/virclosecallbacks.h virCloseCallbacksDomainAdd; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bcafacfb60..99c3d9a4ae 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18767,76 +18767,6 @@ qemuDomainGetFSInfoAgent(virDomainObj *vm, return ret; } -static virDomainFSInfoPtr -qemuAgentFSInfoToPublic(qemuAgentFSInfo *agent, - virDomainDef *vmdef) -{ - virDomainFSInfoPtr ret = NULL; - size_t i; - - ret = g_new0(virDomainFSInfo, 1); - - ret->mountpoint = g_strdup(agent->mountpoint); - ret->name = g_strdup(agent->name); - ret->fstype = g_strdup(agent->fstype); - - if (agent->disks) - ret->devAlias = g_new0(char *, agent->ndisks); - - for (i = 0; i < agent->ndisks; i++) { - qemuAgentDiskAddress *agentdisk = agent->disks[i]; - virDomainDiskDef *diskDef; - - diskDef = virDomainDiskByAddress(vmdef, - &agentdisk->pci_controller, - agentdisk->ccw_addr, - agentdisk->bus, - agentdisk->target, - agentdisk->unit); - if (diskDef != NULL) - ret->devAlias[ret->ndevAlias++] = g_strdup(diskDef->dst); - else - VIR_DEBUG("Missing target name for '%s'.", ret->mountpoint); - } - - return ret; -} - -/* Returns: 0 on success - * -1 otherwise - */ -static int -virDomainFSInfoFormat(qemuAgentFSInfo **agentinfo, - int nagentinfo, - virDomainDef *vmdef, - virDomainFSInfoPtr **info) -{ - int ret = -1; - virDomainFSInfoPtr *info_ret = NULL; - size_t i; - - info_ret = g_new0(virDomainFSInfoPtr, nagentinfo); - - for (i = 0; i < nagentinfo; i++) { - if (!(info_ret[i] = qemuAgentFSInfoToPublic(agentinfo[i], vmdef))) - goto cleanup; - } - - *info = g_steal_pointer(&info_ret); - ret = nagentinfo; - - cleanup: - if (info_ret) { - for (i = 0; i < nagentinfo; i++) { - /* if there was an error, free any memory we've allocated for the - * return value */ - virDomainFSInfoFree(info_ret[i]); - } - g_free(info_ret); - } - return ret; -} - static int qemuDomainGetFSInfo(virDomainPtr dom, virDomainFSInfoPtr **info, -- 2.52.0
