Move the helpers qemu_file_new_fd_input() and qemu_file_new_fd_output(),
that create input and output QEMUFiles backed by existing file descriptors
from cpr-exec to common CPR code. This allows cpr-luo to reuse them.

Signed-off-by: Dongli Zhang <[email protected]>
---
 include/migration/cpr.h |  3 +++
 migration/cpr-exec.c    | 20 ++------------------
 migration/cpr.c         | 17 +++++++++++++++++
 3 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/include/migration/cpr.h b/include/migration/cpr.h
index 77e753a278..23751fc015 100644
--- a/include/migration/cpr.h
+++ b/include/migration/cpr.h
@@ -60,6 +60,9 @@ bool cpr_state_load(MigrationChannel *channel, Error **errp);
 void cpr_state_close(void);
 struct QIOChannel *cpr_state_ioc(void);
 
+QEMUFile *cpr_file_new_fd_input(int fd, const char *name);
+QEMUFile *cpr_file_new_fd_output(int fd, const char *name);
+
 bool cpr_incoming_needed(void *opaque);
 int cpr_get_fd_param(const char *name, const char *fdname, int index,
                      Error **errp);
diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c
index daa50916d2..b31ec3e59f 100644
--- a/migration/cpr-exec.c
+++ b/migration/cpr-exec.c
@@ -24,22 +24,6 @@
 
 #define CPR_EXEC_STATE_NAME "QEMU_CPR_EXEC_STATE"
 
-static QEMUFile *qemu_file_new_fd_input(int fd, const char *name)
-{
-    g_autoptr(QIOChannelFile) fioc = qio_channel_file_new_fd(fd);
-    QIOChannel *ioc = QIO_CHANNEL(fioc);
-    qio_channel_set_name(ioc, name);
-    return qemu_file_new_input(ioc);
-}
-
-static QEMUFile *qemu_file_new_fd_output(int fd, const char *name)
-{
-    g_autoptr(QIOChannelFile) fioc = qio_channel_file_new_fd(fd);
-    QIOChannel *ioc = QIO_CHANNEL(fioc);
-    qio_channel_set_name(ioc, name);
-    return qemu_file_new_output(ioc);
-}
-
 bool cpr_exec_persist_state(QEMUFile *f, Error **errp)
 {
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(qemu_file_get_ioc(f));
@@ -99,7 +83,7 @@ QEMUFile *cpr_exec_output(Error **errp)
         return NULL;
     }
 
-    return qemu_file_new_fd_output(mfd, CPR_EXEC_STATE_NAME);
+    return cpr_file_new_fd_output(mfd, CPR_EXEC_STATE_NAME);
 }
 
 QEMUFile *cpr_exec_input(Error **errp)
@@ -107,7 +91,7 @@ QEMUFile *cpr_exec_input(Error **errp)
     int mfd = cpr_exec_find_state();
 
     lseek(mfd, 0, SEEK_SET);
-    return qemu_file_new_fd_input(mfd, CPR_EXEC_STATE_NAME);
+    return cpr_file_new_fd_input(mfd, CPR_EXEC_STATE_NAME);
 }
 
 static bool preserve_fd(int fd)
diff --git a/migration/cpr.c b/migration/cpr.c
index 700e833003..3e8e94e5fe 100644
--- a/migration/cpr.c
+++ b/migration/cpr.c
@@ -10,6 +10,7 @@
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "hw/vfio/vfio-cpr.h"
+#include "io/channel-file.h"
 #include "migration/cpr.h"
 #include "migration/misc.h"
 #include "migration/options.h"
@@ -242,6 +243,22 @@ bool cpr_walk_fd(cpr_walk_fd_cb cb)
     return true;
 }
 
+QEMUFile *cpr_file_new_fd_input(int fd, const char *name)
+{
+    g_autoptr(QIOChannelFile) fioc = qio_channel_file_new_fd(fd);
+    QIOChannel *ioc = QIO_CHANNEL(fioc);
+    qio_channel_set_name(ioc, name);
+    return qemu_file_new_input(ioc);
+}
+
+QEMUFile *cpr_file_new_fd_output(int fd, const char *name)
+{
+    g_autoptr(QIOChannelFile) fioc = qio_channel_file_new_fd(fd);
+    QIOChannel *ioc = QIO_CHANNEL(fioc);
+    qio_channel_set_name(ioc, name);
+    return qemu_file_new_output(ioc);
+}
+
 static const VMStateDescription vmstate_cpr_luo_state = {
     .name = CPR_LUO_STATE,
     .version_id = 1,
-- 
2.43.5


Reply via email to