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
