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

Reply via email to