* [PATCH V4 0/2] migration file URI @ 2023-06-30 14:25 Steve Sistare 2023-06-30 14:25 ` [PATCH V4 1/2] migration: " Steve Sistare ` (3 more replies) 0 siblings, 4 replies; 17+ messages in thread From: Steve Sistare @ 2023-06-30 14:25 UTC (permalink / raw) To: qemu-devel Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas, Steve Sistare Add the migration URI "file:filename[,offset=offset]". Fabiano Rosas has submitted the unit tests in the series migration: Test the new "file:" migration Steve Sistare (2): migration: file URI migration: file URI offset migration/file.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ migration/file.h | 14 +++++++ migration/meson.build | 1 + migration/migration.c | 5 +++ migration/trace-events | 4 ++ qemu-options.hx | 7 +++- 6 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 migration/file.c create mode 100644 migration/file.h -- 1.8.3.1 ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH V4 1/2] migration: file URI 2023-06-30 14:25 [PATCH V4 0/2] migration file URI Steve Sistare @ 2023-06-30 14:25 ` Steve Sistare 2023-08-30 13:16 ` Daniel P. Berrangé 2023-06-30 14:25 ` [PATCH V4 2/2] migration: file URI offset Steve Sistare ` (2 subsequent siblings) 3 siblings, 1 reply; 17+ messages in thread From: Steve Sistare @ 2023-06-30 14:25 UTC (permalink / raw) To: qemu-devel Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas, Steve Sistare Extend the migration URI to support file:<filename>. This can be used for any migration scenario that does not require a reverse path. It can be used as an alternative to 'exec:cat > file' in minimized containers that do not contain /bin/sh, and it is easier to use than the fd:<fdname> URI. It can be used in HMP commands, and as a qemu command-line parameter. For best performance, guest ram should be shared and x-ignore-shared should be true, so guest pages are not written to the file, in which case the guest may remain running. If ram is not so configured, then the user is advised to stop the guest first. Otherwise, a busy guest may re-dirty the same page, causing it to be appended to the file multiple times, and the file may grow unboundedly. That issue is being addressed in the "fixed-ram" patch series. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Peter Xu <peterx@redhat.com> --- migration/file.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ migration/file.h | 14 ++++++++++++ migration/meson.build | 1 + migration/migration.c | 5 ++++ migration/trace-events | 4 ++++ qemu-options.hx | 6 ++++- 6 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 migration/file.c create mode 100644 migration/file.h diff --git a/migration/file.c b/migration/file.c new file mode 100644 index 0000000..8e35827 --- /dev/null +++ b/migration/file.c @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2021-2023 Oracle and/or its affiliates. + * + * This work is licensed under the terms of the GNU GPL, version 2. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "channel.h" +#include "file.h" +#include "migration.h" +#include "io/channel-file.h" +#include "io/channel-util.h" +#include "trace.h" + +void file_start_outgoing_migration(MigrationState *s, const char *filename, + Error **errp) +{ + g_autoptr(QIOChannelFile) fioc = NULL; + QIOChannel *ioc; + + trace_migration_file_outgoing(filename); + + fioc = qio_channel_file_new_path(filename, O_CREAT | O_WRONLY | O_TRUNC, + 0600, errp); + if (!fioc) { + return; + } + + ioc = QIO_CHANNEL(fioc); + qio_channel_set_name(ioc, "migration-file-outgoing"); + migration_channel_connect(s, ioc, NULL, NULL); +} + +static gboolean file_accept_incoming_migration(QIOChannel *ioc, + GIOCondition condition, + gpointer opaque) +{ + migration_channel_process_incoming(ioc); + object_unref(OBJECT(ioc)); + return G_SOURCE_REMOVE; +} + +void file_start_incoming_migration(const char *filename, Error **errp) +{ + QIOChannelFile *fioc = NULL; + QIOChannel *ioc; + + trace_migration_file_incoming(filename); + + fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp); + if (!fioc) { + return; + } + + ioc = QIO_CHANNEL(fioc); + qio_channel_set_name(QIO_CHANNEL(ioc), "migration-file-incoming"); + qio_channel_add_watch_full(ioc, G_IO_IN, + file_accept_incoming_migration, + NULL, NULL, + g_main_context_get_thread_default()); +} diff --git a/migration/file.h b/migration/file.h new file mode 100644 index 0000000..841b94a --- /dev/null +++ b/migration/file.h @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2021-2023 Oracle and/or its affiliates. + * + * This work is licensed under the terms of the GNU GPL, version 2. + * See the COPYING file in the top-level directory. + */ + +#ifndef QEMU_MIGRATION_FILE_H +#define QEMU_MIGRATION_FILE_H +void file_start_incoming_migration(const char *filename, Error **errp); + +void file_start_outgoing_migration(MigrationState *s, const char *filename, + Error **errp); +#endif diff --git a/migration/meson.build b/migration/meson.build index 1ae2852..92b1cc4 100644 --- a/migration/meson.build +++ b/migration/meson.build @@ -16,6 +16,7 @@ system_ss.add(files( 'dirtyrate.c', 'exec.c', 'fd.c', + 'file.c', 'global_state.c', 'migration-hmp-cmds.c', 'migration.c', diff --git a/migration/migration.c b/migration/migration.c index dc05c6f..cfbde86 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -20,6 +20,7 @@ #include "migration/blocker.h" #include "exec.h" #include "fd.h" +#include "file.h" #include "socket.h" #include "sysemu/runstate.h" #include "sysemu/sysemu.h" @@ -442,6 +443,8 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) exec_start_incoming_migration(p, errp); } else if (strstart(uri, "fd:", &p)) { fd_start_incoming_migration(p, errp); + } else if (strstart(uri, "file:", &p)) { + file_start_incoming_migration(p, errp); } else { error_setg(errp, "unknown migration protocol: %s", uri); } @@ -1662,6 +1665,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, exec_start_outgoing_migration(s, p, &local_err); } else if (strstart(uri, "fd:", &p)) { fd_start_outgoing_migration(s, p, &local_err); + } else if (strstart(uri, "file:", &p)) { + file_start_outgoing_migration(s, p, &local_err); } else { if (!(has_resume && resume)) { yank_unregister_instance(MIGRATION_YANK_INSTANCE); diff --git a/migration/trace-events b/migration/trace-events index cdaef7a..c8c1771 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -307,6 +307,10 @@ migration_exec_incoming(const char *cmd) "cmd=%s" migration_fd_outgoing(int fd) "fd=%d" migration_fd_incoming(int fd) "fd=%d" +# file.c +migration_file_outgoing(const char *filename) "filename=%s" +migration_file_incoming(const char *filename) "filename=%s" + # socket.c migration_socket_incoming_accepted(void) "" migration_socket_outgoing_connected(const char *hostname) "hostname=%s" diff --git a/qemu-options.hx b/qemu-options.hx index b57489d..5aab8fb 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4622,6 +4622,7 @@ DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \ " prepare for incoming migration, listen on\n" \ " specified protocol and socket address\n" \ "-incoming fd:fd\n" \ + "-incoming file:filename\n" \ "-incoming exec:cmdline\n" \ " accept incoming migration on given file descriptor\n" \ " or from given external command\n" \ @@ -4638,7 +4639,10 @@ SRST Prepare for incoming migration, listen on a given unix socket. ``-incoming fd:fd`` - Accept incoming migration from a given filedescriptor. + Accept incoming migration from a given file descriptor. + +``-incoming file:filename`` + Accept incoming migration from a given file. ``-incoming exec:cmdline`` Accept incoming migration as an output from specified external -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH V4 1/2] migration: file URI 2023-06-30 14:25 ` [PATCH V4 1/2] migration: " Steve Sistare @ 2023-08-30 13:16 ` Daniel P. Berrangé 2023-08-30 14:15 ` Steven Sistare 0 siblings, 1 reply; 17+ messages in thread From: Daniel P. Berrangé @ 2023-08-30 13:16 UTC (permalink / raw) To: Steve Sistare; +Cc: qemu-devel, Peter Xu, Juan Quintela, Fabiano Rosas On Fri, Jun 30, 2023 at 07:25:07AM -0700, Steve Sistare wrote: > Extend the migration URI to support file:<filename>. This can be used for > any migration scenario that does not require a reverse path. It can be > used as an alternative to 'exec:cat > file' in minimized containers that > do not contain /bin/sh, and it is easier to use than the fd:<fdname> URI. > It can be used in HMP commands, and as a qemu command-line parameter. > > For best performance, guest ram should be shared and x-ignore-shared > should be true, so guest pages are not written to the file, in which case > the guest may remain running. If ram is not so configured, then the user > is advised to stop the guest first. Otherwise, a busy guest may re-dirty > the same page, causing it to be appended to the file multiple times, > and the file may grow unboundedly. That issue is being addressed in the > "fixed-ram" patch series. > > Signed-off-by: Steve Sistare <steven.sistare@oracle.com> > Reviewed-by: Fabiano Rosas <farosas@suse.de> > Reviewed-by: Peter Xu <peterx@redhat.com> > --- > migration/file.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ > migration/file.h | 14 ++++++++++++ > migration/meson.build | 1 + > migration/migration.c | 5 ++++ > migration/trace-events | 4 ++++ > qemu-options.hx | 6 ++++- > 6 files changed, 91 insertions(+), 1 deletion(-) > create mode 100644 migration/file.c > create mode 100644 migration/file.h > > diff --git a/migration/file.c b/migration/file.c > new file mode 100644 > index 0000000..8e35827 > --- /dev/null > +++ b/migration/file.c > @@ -0,0 +1,62 @@ > +/* > + * Copyright (c) 2021-2023 Oracle and/or its affiliates. > + * > + * This work is licensed under the terms of the GNU GPL, version 2. Was it an intentional decision to assign this under the version 2 *only* ? QEMU's LICENSE file states [quote] As of July 2013, contributions under version 2 of the GNU General Public License (and no later version) are only accepted for the following files or directories: bsd-user/, linux-user/, hw/vfio/, hw/xen/xen_pt*. [/quote] Thus we'd expect this new file to be version 2, or later. > + * See the COPYING file in the top-level directory. > + */ > + > +#include "qemu/osdep.h" > +#include "channel.h" > +#include "file.h" > +#include "migration.h" > +#include "io/channel-file.h" > +#include "io/channel-util.h" > +#include "trace.h" > + > +void file_start_outgoing_migration(MigrationState *s, const char *filename, > + Error **errp) > +{ > + g_autoptr(QIOChannelFile) fioc = NULL; > + QIOChannel *ioc; > + > + trace_migration_file_outgoing(filename); > + > + fioc = qio_channel_file_new_path(filename, O_CREAT | O_WRONLY | O_TRUNC, > + 0600, errp); > + if (!fioc) { > + return; > + } > + > + ioc = QIO_CHANNEL(fioc); > + qio_channel_set_name(ioc, "migration-file-outgoing"); > + migration_channel_connect(s, ioc, NULL, NULL); > +} > + > +static gboolean file_accept_incoming_migration(QIOChannel *ioc, > + GIOCondition condition, > + gpointer opaque) > +{ > + migration_channel_process_incoming(ioc); > + object_unref(OBJECT(ioc)); > + return G_SOURCE_REMOVE; > +} > + > +void file_start_incoming_migration(const char *filename, Error **errp) > +{ > + QIOChannelFile *fioc = NULL; > + QIOChannel *ioc; > + > + trace_migration_file_incoming(filename); > + > + fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp); > + if (!fioc) { > + return; > + } > + > + ioc = QIO_CHANNEL(fioc); > + qio_channel_set_name(QIO_CHANNEL(ioc), "migration-file-incoming"); > + qio_channel_add_watch_full(ioc, G_IO_IN, > + file_accept_incoming_migration, > + NULL, NULL, > + g_main_context_get_thread_default()); > +} > diff --git a/migration/file.h b/migration/file.h > new file mode 100644 > index 0000000..841b94a > --- /dev/null > +++ b/migration/file.h > @@ -0,0 +1,14 @@ > +/* > + * Copyright (c) 2021-2023 Oracle and/or its affiliates. > + * > + * This work is licensed under the terms of the GNU GPL, version 2. > + * See the COPYING file in the top-level directory. > + */ > + > +#ifndef QEMU_MIGRATION_FILE_H > +#define QEMU_MIGRATION_FILE_H > +void file_start_incoming_migration(const char *filename, Error **errp); > + > +void file_start_outgoing_migration(MigrationState *s, const char *filename, > + Error **errp); > +#endif > diff --git a/migration/meson.build b/migration/meson.build > index 1ae2852..92b1cc4 100644 > --- a/migration/meson.build > +++ b/migration/meson.build > @@ -16,6 +16,7 @@ system_ss.add(files( > 'dirtyrate.c', > 'exec.c', > 'fd.c', > + 'file.c', > 'global_state.c', > 'migration-hmp-cmds.c', > 'migration.c', > diff --git a/migration/migration.c b/migration/migration.c > index dc05c6f..cfbde86 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -20,6 +20,7 @@ > #include "migration/blocker.h" > #include "exec.h" > #include "fd.h" > +#include "file.h" > #include "socket.h" > #include "sysemu/runstate.h" > #include "sysemu/sysemu.h" > @@ -442,6 +443,8 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) > exec_start_incoming_migration(p, errp); > } else if (strstart(uri, "fd:", &p)) { > fd_start_incoming_migration(p, errp); > + } else if (strstart(uri, "file:", &p)) { > + file_start_incoming_migration(p, errp); > } else { > error_setg(errp, "unknown migration protocol: %s", uri); > } > @@ -1662,6 +1665,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, > exec_start_outgoing_migration(s, p, &local_err); > } else if (strstart(uri, "fd:", &p)) { > fd_start_outgoing_migration(s, p, &local_err); > + } else if (strstart(uri, "file:", &p)) { > + file_start_outgoing_migration(s, p, &local_err); > } else { > if (!(has_resume && resume)) { > yank_unregister_instance(MIGRATION_YANK_INSTANCE); This section will clash with the other pending reviewed series that introduces a formall QAPI schema for migration addresses. Either this or that series will need an update depending on which Juan decides to merge first. The changes should be fairly simple to resolve so not a big deal. > diff --git a/migration/trace-events b/migration/trace-events > index cdaef7a..c8c1771 100644 > --- a/migration/trace-events > +++ b/migration/trace-events > @@ -307,6 +307,10 @@ migration_exec_incoming(const char *cmd) "cmd=%s" > migration_fd_outgoing(int fd) "fd=%d" > migration_fd_incoming(int fd) "fd=%d" > > +# file.c > +migration_file_outgoing(const char *filename) "filename=%s" > +migration_file_incoming(const char *filename) "filename=%s" > + > # socket.c > migration_socket_incoming_accepted(void) "" > migration_socket_outgoing_connected(const char *hostname) "hostname=%s" > diff --git a/qemu-options.hx b/qemu-options.hx > index b57489d..5aab8fb 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -4622,6 +4622,7 @@ DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \ > " prepare for incoming migration, listen on\n" \ > " specified protocol and socket address\n" \ > "-incoming fd:fd\n" \ > + "-incoming file:filename\n" \ > "-incoming exec:cmdline\n" \ > " accept incoming migration on given file descriptor\n" \ > " or from given external command\n" \ > @@ -4638,7 +4639,10 @@ SRST > Prepare for incoming migration, listen on a given unix socket. > > ``-incoming fd:fd`` > - Accept incoming migration from a given filedescriptor. > + Accept incoming migration from a given file descriptor. > + > +``-incoming file:filename`` > + Accept incoming migration from a given file. > > ``-incoming exec:cmdline`` > Accept incoming migration as an output from specified external > -- > 1.8.3.1 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 1/2] migration: file URI 2023-08-30 13:16 ` Daniel P. Berrangé @ 2023-08-30 14:15 ` Steven Sistare 2023-09-08 10:52 ` Daniel P. Berrangé 0 siblings, 1 reply; 17+ messages in thread From: Steven Sistare @ 2023-08-30 14:15 UTC (permalink / raw) To: Daniel P. Berrangé Cc: qemu-devel, Peter Xu, Juan Quintela, Fabiano Rosas On 8/30/2023 9:16 AM, Daniel P. Berrangé wrote: > On Fri, Jun 30, 2023 at 07:25:07AM -0700, Steve Sistare wrote: >> Extend the migration URI to support file:<filename>. This can be used for >> any migration scenario that does not require a reverse path. It can be >> used as an alternative to 'exec:cat > file' in minimized containers that >> do not contain /bin/sh, and it is easier to use than the fd:<fdname> URI. >> It can be used in HMP commands, and as a qemu command-line parameter. >> >> For best performance, guest ram should be shared and x-ignore-shared >> should be true, so guest pages are not written to the file, in which case >> the guest may remain running. If ram is not so configured, then the user >> is advised to stop the guest first. Otherwise, a busy guest may re-dirty >> the same page, causing it to be appended to the file multiple times, >> and the file may grow unboundedly. That issue is being addressed in the >> "fixed-ram" patch series. >> >> Signed-off-by: Steve Sistare <steven.sistare@oracle.com> >> Reviewed-by: Fabiano Rosas <farosas@suse.de> >> Reviewed-by: Peter Xu <peterx@redhat.com> >> --- >> migration/file.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ >> migration/file.h | 14 ++++++++++++ >> migration/meson.build | 1 + >> migration/migration.c | 5 ++++ >> migration/trace-events | 4 ++++ >> qemu-options.hx | 6 ++++- >> 6 files changed, 91 insertions(+), 1 deletion(-) >> create mode 100644 migration/file.c >> create mode 100644 migration/file.h >> >> diff --git a/migration/file.c b/migration/file.c >> new file mode 100644 >> index 0000000..8e35827 >> --- /dev/null >> +++ b/migration/file.c >> @@ -0,0 +1,62 @@ >> +/* >> + * Copyright (c) 2021-2023 Oracle and/or its affiliates. >> + * >> + * This work is licensed under the terms of the GNU GPL, version 2. > > Was it an intentional decision to assign this under the version 2 *only* ? > > QEMU's LICENSE file states > > [quote] > As of July 2013, contributions under version 2 of the GNU General Public > License (and no later version) are only accepted for the following files > or directories: bsd-user/, linux-user/, hw/vfio/, hw/xen/xen_pt*. > [/quote] > > Thus we'd expect this new file to be version 2, or later. My mistake, sorry. It should say "GNU GPL, version 2 or later" - Steve >> + * See the COPYING file in the top-level directory. >> + */ >> + >> +#include "qemu/osdep.h" >> +#include "channel.h" >> +#include "file.h" >> +#include "migration.h" >> +#include "io/channel-file.h" >> +#include "io/channel-util.h" >> +#include "trace.h" >> + >> +void file_start_outgoing_migration(MigrationState *s, const char *filename, >> + Error **errp) >> +{ >> + g_autoptr(QIOChannelFile) fioc = NULL; >> + QIOChannel *ioc; >> + >> + trace_migration_file_outgoing(filename); >> + >> + fioc = qio_channel_file_new_path(filename, O_CREAT | O_WRONLY | O_TRUNC, >> + 0600, errp); >> + if (!fioc) { >> + return; >> + } >> + >> + ioc = QIO_CHANNEL(fioc); >> + qio_channel_set_name(ioc, "migration-file-outgoing"); >> + migration_channel_connect(s, ioc, NULL, NULL); >> +} >> + >> +static gboolean file_accept_incoming_migration(QIOChannel *ioc, >> + GIOCondition condition, >> + gpointer opaque) >> +{ >> + migration_channel_process_incoming(ioc); >> + object_unref(OBJECT(ioc)); >> + return G_SOURCE_REMOVE; >> +} >> + >> +void file_start_incoming_migration(const char *filename, Error **errp) >> +{ >> + QIOChannelFile *fioc = NULL; >> + QIOChannel *ioc; >> + >> + trace_migration_file_incoming(filename); >> + >> + fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp); >> + if (!fioc) { >> + return; >> + } >> + >> + ioc = QIO_CHANNEL(fioc); >> + qio_channel_set_name(QIO_CHANNEL(ioc), "migration-file-incoming"); >> + qio_channel_add_watch_full(ioc, G_IO_IN, >> + file_accept_incoming_migration, >> + NULL, NULL, >> + g_main_context_get_thread_default()); >> +} >> diff --git a/migration/file.h b/migration/file.h >> new file mode 100644 >> index 0000000..841b94a >> --- /dev/null >> +++ b/migration/file.h >> @@ -0,0 +1,14 @@ >> +/* >> + * Copyright (c) 2021-2023 Oracle and/or its affiliates. >> + * >> + * This work is licensed under the terms of the GNU GPL, version 2. >> + * See the COPYING file in the top-level directory. >> + */ >> + >> +#ifndef QEMU_MIGRATION_FILE_H >> +#define QEMU_MIGRATION_FILE_H >> +void file_start_incoming_migration(const char *filename, Error **errp); >> + >> +void file_start_outgoing_migration(MigrationState *s, const char *filename, >> + Error **errp); >> +#endif >> diff --git a/migration/meson.build b/migration/meson.build >> index 1ae2852..92b1cc4 100644 >> --- a/migration/meson.build >> +++ b/migration/meson.build >> @@ -16,6 +16,7 @@ system_ss.add(files( >> 'dirtyrate.c', >> 'exec.c', >> 'fd.c', >> + 'file.c', >> 'global_state.c', >> 'migration-hmp-cmds.c', >> 'migration.c', >> diff --git a/migration/migration.c b/migration/migration.c >> index dc05c6f..cfbde86 100644 >> --- a/migration/migration.c >> +++ b/migration/migration.c >> @@ -20,6 +20,7 @@ >> #include "migration/blocker.h" >> #include "exec.h" >> #include "fd.h" >> +#include "file.h" >> #include "socket.h" >> #include "sysemu/runstate.h" >> #include "sysemu/sysemu.h" >> @@ -442,6 +443,8 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) >> exec_start_incoming_migration(p, errp); >> } else if (strstart(uri, "fd:", &p)) { >> fd_start_incoming_migration(p, errp); >> + } else if (strstart(uri, "file:", &p)) { >> + file_start_incoming_migration(p, errp); >> } else { >> error_setg(errp, "unknown migration protocol: %s", uri); >> } >> @@ -1662,6 +1665,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, >> exec_start_outgoing_migration(s, p, &local_err); >> } else if (strstart(uri, "fd:", &p)) { >> fd_start_outgoing_migration(s, p, &local_err); >> + } else if (strstart(uri, "file:", &p)) { >> + file_start_outgoing_migration(s, p, &local_err); >> } else { >> if (!(has_resume && resume)) { >> yank_unregister_instance(MIGRATION_YANK_INSTANCE); > > This section will clash with the other pending reviewed series > that introduces a formall QAPI schema for migration addresses. > > Either this or that series will need an update depending on > which Juan decides to merge first. The changes should be > fairly simple to resolve so not a big deal. > >> diff --git a/migration/trace-events b/migration/trace-events >> index cdaef7a..c8c1771 100644 >> --- a/migration/trace-events >> +++ b/migration/trace-events >> @@ -307,6 +307,10 @@ migration_exec_incoming(const char *cmd) "cmd=%s" >> migration_fd_outgoing(int fd) "fd=%d" >> migration_fd_incoming(int fd) "fd=%d" >> >> +# file.c >> +migration_file_outgoing(const char *filename) "filename=%s" >> +migration_file_incoming(const char *filename) "filename=%s" >> + >> # socket.c >> migration_socket_incoming_accepted(void) "" >> migration_socket_outgoing_connected(const char *hostname) "hostname=%s" >> diff --git a/qemu-options.hx b/qemu-options.hx >> index b57489d..5aab8fb 100644 >> --- a/qemu-options.hx >> +++ b/qemu-options.hx >> @@ -4622,6 +4622,7 @@ DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \ >> " prepare for incoming migration, listen on\n" \ >> " specified protocol and socket address\n" \ >> "-incoming fd:fd\n" \ >> + "-incoming file:filename\n" \ >> "-incoming exec:cmdline\n" \ >> " accept incoming migration on given file descriptor\n" \ >> " or from given external command\n" \ >> @@ -4638,7 +4639,10 @@ SRST >> Prepare for incoming migration, listen on a given unix socket. >> >> ``-incoming fd:fd`` >> - Accept incoming migration from a given filedescriptor. >> + Accept incoming migration from a given file descriptor. >> + >> +``-incoming file:filename`` >> + Accept incoming migration from a given file. >> >> ``-incoming exec:cmdline`` >> Accept incoming migration as an output from specified external >> -- >> 1.8.3.1 >> > > With regards, > Daniel ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 1/2] migration: file URI 2023-08-30 14:15 ` Steven Sistare @ 2023-09-08 10:52 ` Daniel P. Berrangé 2023-09-08 14:23 ` Steven Sistare 0 siblings, 1 reply; 17+ messages in thread From: Daniel P. Berrangé @ 2023-09-08 10:52 UTC (permalink / raw) To: Steven Sistare; +Cc: qemu-devel, Peter Xu, Juan Quintela, Fabiano Rosas On Wed, Aug 30, 2023 at 10:15:43AM -0400, Steven Sistare wrote: > On 8/30/2023 9:16 AM, Daniel P. Berrangé wrote: > > On Fri, Jun 30, 2023 at 07:25:07AM -0700, Steve Sistare wrote: > >> Extend the migration URI to support file:<filename>. This can be used for > >> any migration scenario that does not require a reverse path. It can be > >> used as an alternative to 'exec:cat > file' in minimized containers that > >> do not contain /bin/sh, and it is easier to use than the fd:<fdname> URI. > >> It can be used in HMP commands, and as a qemu command-line parameter. > >> > >> For best performance, guest ram should be shared and x-ignore-shared > >> should be true, so guest pages are not written to the file, in which case > >> the guest may remain running. If ram is not so configured, then the user > >> is advised to stop the guest first. Otherwise, a busy guest may re-dirty > >> the same page, causing it to be appended to the file multiple times, > >> and the file may grow unboundedly. That issue is being addressed in the > >> "fixed-ram" patch series. > >> > >> Signed-off-by: Steve Sistare <steven.sistare@oracle.com> > >> Reviewed-by: Fabiano Rosas <farosas@suse.de> > >> Reviewed-by: Peter Xu <peterx@redhat.com> > >> --- > >> migration/file.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ > >> migration/file.h | 14 ++++++++++++ > >> migration/meson.build | 1 + > >> migration/migration.c | 5 ++++ > >> migration/trace-events | 4 ++++ > >> qemu-options.hx | 6 ++++- > >> 6 files changed, 91 insertions(+), 1 deletion(-) > >> create mode 100644 migration/file.c > >> create mode 100644 migration/file.h > >> > >> diff --git a/migration/file.c b/migration/file.c > >> new file mode 100644 > >> index 0000000..8e35827 > >> --- /dev/null > >> +++ b/migration/file.c > >> @@ -0,0 +1,62 @@ > >> +/* > >> + * Copyright (c) 2021-2023 Oracle and/or its affiliates. > >> + * > >> + * This work is licensed under the terms of the GNU GPL, version 2. > > > > Was it an intentional decision to assign this under the version 2 *only* ? > > > > QEMU's LICENSE file states > > > > [quote] > > As of July 2013, contributions under version 2 of the GNU General Public > > License (and no later version) are only accepted for the following files > > or directories: bsd-user/, linux-user/, hw/vfio/, hw/xen/xen_pt*. > > [/quote] > > > > Thus we'd expect this new file to be version 2, or later. > > My mistake, sorry. It should say "GNU GPL, version 2 or later" Could you re-post, as aside from that, this series looks ready for merge. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 1/2] migration: file URI 2023-09-08 10:52 ` Daniel P. Berrangé @ 2023-09-08 14:23 ` Steven Sistare 0 siblings, 0 replies; 17+ messages in thread From: Steven Sistare @ 2023-09-08 14:23 UTC (permalink / raw) To: Daniel P. Berrangé Cc: qemu-devel, Peter Xu, Juan Quintela, Fabiano Rosas On 9/8/2023 6:52 AM, Daniel P. Berrangé wrote: > On Wed, Aug 30, 2023 at 10:15:43AM -0400, Steven Sistare wrote: >> On 8/30/2023 9:16 AM, Daniel P. Berrangé wrote: >>> On Fri, Jun 30, 2023 at 07:25:07AM -0700, Steve Sistare wrote: >>>> Extend the migration URI to support file:<filename>. This can be used for >>>> any migration scenario that does not require a reverse path. It can be >>>> used as an alternative to 'exec:cat > file' in minimized containers that >>>> do not contain /bin/sh, and it is easier to use than the fd:<fdname> URI. >>>> It can be used in HMP commands, and as a qemu command-line parameter. >>>> >>>> For best performance, guest ram should be shared and x-ignore-shared >>>> should be true, so guest pages are not written to the file, in which case >>>> the guest may remain running. If ram is not so configured, then the user >>>> is advised to stop the guest first. Otherwise, a busy guest may re-dirty >>>> the same page, causing it to be appended to the file multiple times, >>>> and the file may grow unboundedly. That issue is being addressed in the >>>> "fixed-ram" patch series. >>>> >>>> Signed-off-by: Steve Sistare <steven.sistare@oracle.com> >>>> Reviewed-by: Fabiano Rosas <farosas@suse.de> >>>> Reviewed-by: Peter Xu <peterx@redhat.com> >>>> --- >>>> migration/file.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ >>>> migration/file.h | 14 ++++++++++++ >>>> migration/meson.build | 1 + >>>> migration/migration.c | 5 ++++ >>>> migration/trace-events | 4 ++++ >>>> qemu-options.hx | 6 ++++- >>>> 6 files changed, 91 insertions(+), 1 deletion(-) >>>> create mode 100644 migration/file.c >>>> create mode 100644 migration/file.h >>>> >>>> diff --git a/migration/file.c b/migration/file.c >>>> new file mode 100644 >>>> index 0000000..8e35827 >>>> --- /dev/null >>>> +++ b/migration/file.c >>>> @@ -0,0 +1,62 @@ >>>> +/* >>>> + * Copyright (c) 2021-2023 Oracle and/or its affiliates. >>>> + * >>>> + * This work is licensed under the terms of the GNU GPL, version 2. >>> >>> Was it an intentional decision to assign this under the version 2 *only* ? >>> >>> QEMU's LICENSE file states >>> >>> [quote] >>> As of July 2013, contributions under version 2 of the GNU General Public >>> License (and no later version) are only accepted for the following files >>> or directories: bsd-user/, linux-user/, hw/vfio/, hw/xen/xen_pt*. >>> [/quote] >>> >>> Thus we'd expect this new file to be version 2, or later. >> >> My mistake, sorry. It should say "GNU GPL, version 2 or later" > > Could you re-post, as aside from that, this series looks > ready for merge. Done, thanks, see V5. - Steve ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH V4 2/2] migration: file URI offset 2023-06-30 14:25 [PATCH V4 0/2] migration file URI Steve Sistare 2023-06-30 14:25 ` [PATCH V4 1/2] migration: " Steve Sistare @ 2023-06-30 14:25 ` Steve Sistare 2023-07-13 21:26 ` [PATCH V4 0/2] migration file URI Michael Galaxy 2023-08-22 12:00 ` Claudio Fontana 3 siblings, 0 replies; 17+ messages in thread From: Steve Sistare @ 2023-06-30 14:25 UTC (permalink / raw) To: qemu-devel Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas, Steve Sistare Allow an offset option to be specified as part of the file URI, in the form "file:filename,offset=offset", where offset accepts the common size suffixes, or the 0x prefix, but not both. Migration data is written to and read from the file starting at offset. If unspecified, it defaults to 0. This is needed by libvirt to store its own data at the head of the file. Suggested-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Peter Xu <peterx@redhat.com> --- migration/file.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- qemu-options.hx | 7 ++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/migration/file.c b/migration/file.c index 8e35827..61e2a37 100644 --- a/migration/file.c +++ b/migration/file.c @@ -6,6 +6,8 @@ */ #include "qemu/osdep.h" +#include "qemu/cutils.h" +#include "qapi/error.h" #include "channel.h" #include "file.h" #include "migration.h" @@ -13,14 +15,41 @@ #include "io/channel-util.h" #include "trace.h" -void file_start_outgoing_migration(MigrationState *s, const char *filename, +#define OFFSET_OPTION ",offset=" + +/* Remove the offset option from @filespec and return it in @offsetp. */ + +static int file_parse_offset(char *filespec, uint64_t *offsetp, Error **errp) +{ + char *option = strstr(filespec, OFFSET_OPTION); + int ret; + + if (option) { + *option = 0; + option += sizeof(OFFSET_OPTION) - 1; + ret = qemu_strtosz(option, NULL, offsetp); + if (ret) { + error_setg_errno(errp, -ret, "file URI has bad offset %s", option); + return -1; + } + } + return 0; +} + +void file_start_outgoing_migration(MigrationState *s, const char *filespec, Error **errp) { + g_autofree char *filename = g_strdup(filespec); g_autoptr(QIOChannelFile) fioc = NULL; + uint64_t offset = 0; QIOChannel *ioc; trace_migration_file_outgoing(filename); + if (file_parse_offset(filename, &offset, errp)) { + return; + } + fioc = qio_channel_file_new_path(filename, O_CREAT | O_WRONLY | O_TRUNC, 0600, errp); if (!fioc) { @@ -28,6 +57,9 @@ void file_start_outgoing_migration(MigrationState *s, const char *filename, } ioc = QIO_CHANNEL(fioc); + if (offset && qio_channel_io_seek(ioc, offset, SEEK_SET, errp) < 0) { + return; + } qio_channel_set_name(ioc, "migration-file-outgoing"); migration_channel_connect(s, ioc, NULL, NULL); } @@ -41,19 +73,28 @@ static gboolean file_accept_incoming_migration(QIOChannel *ioc, return G_SOURCE_REMOVE; } -void file_start_incoming_migration(const char *filename, Error **errp) +void file_start_incoming_migration(const char *filespec, Error **errp) { + g_autofree char *filename = g_strdup(filespec); QIOChannelFile *fioc = NULL; + uint64_t offset = 0; QIOChannel *ioc; trace_migration_file_incoming(filename); + if (file_parse_offset(filename, &offset, errp)) { + return; + } + fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp); if (!fioc) { return; } ioc = QIO_CHANNEL(fioc); + if (offset && qio_channel_io_seek(ioc, offset, SEEK_SET, errp) < 0) { + return; + } qio_channel_set_name(QIO_CHANNEL(ioc), "migration-file-incoming"); qio_channel_add_watch_full(ioc, G_IO_IN, file_accept_incoming_migration, diff --git a/qemu-options.hx b/qemu-options.hx index 5aab8fb..5a92210 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4622,7 +4622,7 @@ DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \ " prepare for incoming migration, listen on\n" \ " specified protocol and socket address\n" \ "-incoming fd:fd\n" \ - "-incoming file:filename\n" \ + "-incoming file:filename[,offset=offset]\n" \ "-incoming exec:cmdline\n" \ " accept incoming migration on given file descriptor\n" \ " or from given external command\n" \ @@ -4641,8 +4641,9 @@ SRST ``-incoming fd:fd`` Accept incoming migration from a given file descriptor. -``-incoming file:filename`` - Accept incoming migration from a given file. +``-incoming file:filename[,offset=offset]`` + Accept incoming migration from a given file starting at offset. + offset allows the common size suffixes, or a 0x prefix, but not both. ``-incoming exec:cmdline`` Accept incoming migration as an output from specified external -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH V4 0/2] migration file URI 2023-06-30 14:25 [PATCH V4 0/2] migration file URI Steve Sistare 2023-06-30 14:25 ` [PATCH V4 1/2] migration: " Steve Sistare 2023-06-30 14:25 ` [PATCH V4 2/2] migration: file URI offset Steve Sistare @ 2023-07-13 21:26 ` Michael Galaxy 2023-08-22 12:00 ` Claudio Fontana 3 siblings, 0 replies; 17+ messages in thread From: Michael Galaxy @ 2023-07-13 21:26 UTC (permalink / raw) To: Steve Sistare, qemu-devel Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas Tested-by: Michael Galaxy <mgalaxy@akamai.com> Reviewed-by: Michael Galaxy <mgalaxy@akamai.com> On 6/30/23 09:25, Steve Sistare wrote: > Add the migration URI "file:filename[,offset=offset]". > > Fabiano Rosas has submitted the unit tests in the series > migration: Test the new "file:" migration > > Steve Sistare (2): > migration: file URI > migration: file URI offset > > migration/file.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ > migration/file.h | 14 +++++++ > migration/meson.build | 1 + > migration/migration.c | 5 +++ > migration/trace-events | 4 ++ > qemu-options.hx | 7 +++- > 6 files changed, 133 insertions(+), 1 deletion(-) > create mode 100644 migration/file.c > create mode 100644 migration/file.h > ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 0/2] migration file URI 2023-06-30 14:25 [PATCH V4 0/2] migration file URI Steve Sistare ` (2 preceding siblings ...) 2023-07-13 21:26 ` [PATCH V4 0/2] migration file URI Michael Galaxy @ 2023-08-22 12:00 ` Claudio Fontana 2023-08-22 13:25 ` Philippe Mathieu-Daudé 3 siblings, 1 reply; 17+ messages in thread From: Claudio Fontana @ 2023-08-22 12:00 UTC (permalink / raw) To: Steve Sistare, qemu-devel, Peter Maydell, Paolo Bonzini Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas Hello, this series is all reviewed, and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore when migrating to disk, can it be merged? Thanks, Claudio On 6/30/23 16:25, Steve Sistare wrote: > Add the migration URI "file:filename[,offset=offset]". > > Fabiano Rosas has submitted the unit tests in the series > migration: Test the new "file:" migration > > Steve Sistare (2): > migration: file URI > migration: file URI offset > > migration/file.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ > migration/file.h | 14 +++++++ > migration/meson.build | 1 + > migration/migration.c | 5 +++ > migration/trace-events | 4 ++ > qemu-options.hx | 7 +++- > 6 files changed, 133 insertions(+), 1 deletion(-) > create mode 100644 migration/file.c > create mode 100644 migration/file.h > ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 0/2] migration file URI 2023-08-22 12:00 ` Claudio Fontana @ 2023-08-22 13:25 ` Philippe Mathieu-Daudé 2023-08-30 13:09 ` Claudio Fontana 0 siblings, 1 reply; 17+ messages in thread From: Philippe Mathieu-Daudé @ 2023-08-22 13:25 UTC (permalink / raw) To: Claudio Fontana, Steve Sistare, qemu-devel, Peter Maydell, Paolo Bonzini Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas Hi Claudio, On 22/8/23 14:00, Claudio Fontana wrote: > Hello, > > this series is all reviewed, > > and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore > when migrating to disk, can it be merged? $ ./scripts/get_maintainer.pl -f migration/meson.build Juan Quintela <quintela@redhat.com> (maintainer:Migration) Peter Xu <peterx@redhat.com> (reviewer:Migration) Leonardo Bras <leobras@redhat.com> (reviewer:Migration) qemu-devel@nongnu.org (open list:All patches CC here) One maintainer, one single point of failure. When the maintainer is busy or offline (vacations?) then everybody is stuck. This is usually solved by adding co-maintainers. Juan, would you accept having co-maintainers helping you dealing with the merge process? I'm not volunteering, but this can be a good opportunity to make a formal request to the community. Regards, Phil. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 0/2] migration file URI 2023-08-22 13:25 ` Philippe Mathieu-Daudé @ 2023-08-30 13:09 ` Claudio Fontana 2023-09-13 13:00 ` Claudio Fontana 0 siblings, 1 reply; 17+ messages in thread From: Claudio Fontana @ 2023-08-30 13:09 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Steve Sistare, qemu-devel, Peter Maydell, Paolo Bonzini Cc: Peter Xu, Juan Quintela, Daniel P. Berrange, Fabiano Rosas On 8/22/23 15:25, Philippe Mathieu-Daudé wrote: > Hi Claudio, > > On 22/8/23 14:00, Claudio Fontana wrote: >> Hello, >> >> this series is all reviewed, >> >> and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore >> when migrating to disk, can it be merged? > > $ ./scripts/get_maintainer.pl -f migration/meson.build > Juan Quintela <quintela@redhat.com> (maintainer:Migration) > Peter Xu <peterx@redhat.com> (reviewer:Migration) > Leonardo Bras <leobras@redhat.com> (reviewer:Migration) > qemu-devel@nongnu.org (open list:All patches CC here) > > One maintainer, one single point of failure. When the > maintainer is busy or offline (vacations?) then everybody > is stuck. > > This is usually solved by adding co-maintainers. > > Juan, would you accept having co-maintainers helping you > dealing with the merge process? I'm not volunteering, but > this can be a good opportunity to make a formal request to > the community. > > Regards, > > Phil. > Thanks Philippe, I would like to highlight to the QEMU community here how important this is for SUSE, to see progress for all the series in the migration area that are currently still waiting and competing for attention. The specific features and improvements we are developing or helping to review are a priority for us, and we are concerned about the rate of progress with the existing governance processes. Fabiano is investing a lot of his attention to this area, with features, bugfixes and reviews, but of course it is up to the community as a whole to address the issue so that reviewed work is merged. My attempt here is to make sure that it is recognized as a problem, so it can be hopefully be addressed by the community in a timely fashion, and we can all benefit from the already developed and reviewed work that is pending. Thanks! CLaudio ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V4 0/2] migration file URI 2023-08-30 13:09 ` Claudio Fontana @ 2023-09-13 13:00 ` Claudio Fontana 2023-09-27 13:14 ` migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] Claudio Fontana 0 siblings, 1 reply; 17+ messages in thread From: Claudio Fontana @ 2023-09-13 13:00 UTC (permalink / raw) To: Juan Quintela Cc: Peter Xu, Daniel P. Berrange, Fabiano Rosas, Paolo Bonzini, Peter Maydell, Steve Sistare, qemu-devel, Philippe Mathieu-Daudé On 8/30/23 15:09, Claudio Fontana wrote: > On 8/22/23 15:25, Philippe Mathieu-Daudé wrote: >> Hi Claudio, >> >> On 22/8/23 14:00, Claudio Fontana wrote: >>> Hello, >>> >>> this series is all reviewed, >>> >>> and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore >>> when migrating to disk, can it be merged? >> >> $ ./scripts/get_maintainer.pl -f migration/meson.build >> Juan Quintela <quintela@redhat.com> (maintainer:Migration) >> Peter Xu <peterx@redhat.com> (reviewer:Migration) >> Leonardo Bras <leobras@redhat.com> (reviewer:Migration) >> qemu-devel@nongnu.org (open list:All patches CC here) >> >> One maintainer, one single point of failure. When the >> maintainer is busy or offline (vacations?) then everybody >> is stuck. >> >> This is usually solved by adding co-maintainers. >> >> Juan, would you accept having co-maintainers helping you >> dealing with the merge process? I'm not volunteering, but >> this can be a good opportunity to make a formal request to >> the community. >> >> Regards, >> >> Phil. >> > > Thanks Philippe, > > I would like to highlight to the QEMU community here how important this is for SUSE, > > to see progress for all the series in the migration area that are currently still waiting and competing for attention. > > The specific features and improvements we are developing or helping to review are a priority for us, > and we are concerned about the rate of progress with the existing governance processes. > > Fabiano is investing a lot of his attention to this area, with features, bugfixes and reviews, > but of course it is up to the community as a whole to address the issue so that reviewed work is merged. > > My attempt here is to make sure that it is recognized as a problem, so it can be hopefully be addressed by the community in a timely fashion, > and we can all benefit from the already developed and reviewed work that is pending. > > Thanks! > > CLaudio > > Hi Juan, any comments? Would additional help for co-maintenance of live migration help? How can we make things proceed? From our (SUSE) side we are willing to help as much as we can, and all options are open, whatever it takes to get the multiple series currently waiting to flow again. Thanks, Claudio ^ permalink raw reply [flat|nested] 17+ messages in thread
* migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] 2023-09-13 13:00 ` Claudio Fontana @ 2023-09-27 13:14 ` Claudio Fontana 2023-09-27 13:56 ` Peter Xu 2023-09-27 14:31 ` Daniel P. Berrangé 0 siblings, 2 replies; 17+ messages in thread From: Claudio Fontana @ 2023-09-27 13:14 UTC (permalink / raw) To: Juan Quintela, Paolo Bonzini, Peter Maydell Cc: Peter Xu, Daniel P. Berrange, Fabiano Rosas, Steve Sistare, qemu-devel, Philippe Mathieu-Daudé On 9/13/23 15:00, Claudio Fontana wrote: > On 8/30/23 15:09, Claudio Fontana wrote: >> On 8/22/23 15:25, Philippe Mathieu-Daudé wrote: >>> Hi Claudio, >>> >>> On 22/8/23 14:00, Claudio Fontana wrote: >>>> Hello, >>>> >>>> this series is all reviewed, >>>> >>>> and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore >>>> when migrating to disk, can it be merged? >>> >>> $ ./scripts/get_maintainer.pl -f migration/meson.build >>> Juan Quintela <quintela@redhat.com> (maintainer:Migration) >>> Peter Xu <peterx@redhat.com> (reviewer:Migration) >>> Leonardo Bras <leobras@redhat.com> (reviewer:Migration) >>> qemu-devel@nongnu.org (open list:All patches CC here) >>> >>> One maintainer, one single point of failure. When the >>> maintainer is busy or offline (vacations?) then everybody >>> is stuck. >>> >>> This is usually solved by adding co-maintainers. >>> >>> Juan, would you accept having co-maintainers helping you >>> dealing with the merge process? I'm not volunteering, but >>> this can be a good opportunity to make a formal request to >>> the community. >>> >>> Regards, >>> >>> Phil. >>> >> >> Thanks Philippe, >> >> I would like to highlight to the QEMU community here how important this is for SUSE, >> >> to see progress for all the series in the migration area that are currently still waiting and competing for attention. >> >> The specific features and improvements we are developing or helping to review are a priority for us, >> and we are concerned about the rate of progress with the existing governance processes. >> >> Fabiano is investing a lot of his attention to this area, with features, bugfixes and reviews, >> but of course it is up to the community as a whole to address the issue so that reviewed work is merged. >> >> My attempt here is to make sure that it is recognized as a problem, so it can be hopefully be addressed by the community in a timely fashion, >> and we can all benefit from the already developed and reviewed work that is pending. >> >> Thanks! >> >> CLaudio >> >> > > Hi Juan, any comments? Would additional help for co-maintenance of live migration help? > How can we make things proceed? > > From our (SUSE) side we are willing to help as much as we can, and all options are open, > whatever it takes to get the multiple series currently waiting to flow again. > > Thanks, > > Claudio Hi any news here? We continue to see the migration area of QEMU as basically blocked; there are a number of reviewed series out and little progress in merging them, as well as a number of improvements not posted to the list at all due to the situation being completely bottlenecked. Would a co-maintenance of migration/ from Fabiano be an option? Should we organize a call to discuss this if the mailing list does not suffice to discuss this topic? Thank you, Claudio ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] 2023-09-27 13:14 ` migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] Claudio Fontana @ 2023-09-27 13:56 ` Peter Xu 2023-09-27 14:36 ` Daniel P. Berrangé 2023-09-27 14:31 ` Daniel P. Berrangé 1 sibling, 1 reply; 17+ messages in thread From: Peter Xu @ 2023-09-27 13:56 UTC (permalink / raw) To: Claudio Fontana Cc: Juan Quintela, Paolo Bonzini, Peter Maydell, Daniel P. Berrange, Fabiano Rosas, Steve Sistare, qemu-devel, Philippe Mathieu-Daudé On Wed, Sep 27, 2023 at 03:14:29PM +0200, Claudio Fontana wrote: > On 9/13/23 15:00, Claudio Fontana wrote: > > On 8/30/23 15:09, Claudio Fontana wrote: > >> On 8/22/23 15:25, Philippe Mathieu-Daudé wrote: > >>> Hi Claudio, > >>> > >>> On 22/8/23 14:00, Claudio Fontana wrote: > >>>> Hello, > >>>> > >>>> this series is all reviewed, > >>>> > >>>> and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore > >>>> when migrating to disk, can it be merged? > >>> > >>> $ ./scripts/get_maintainer.pl -f migration/meson.build > >>> Juan Quintela <quintela@redhat.com> (maintainer:Migration) > >>> Peter Xu <peterx@redhat.com> (reviewer:Migration) > >>> Leonardo Bras <leobras@redhat.com> (reviewer:Migration) > >>> qemu-devel@nongnu.org (open list:All patches CC here) > >>> > >>> One maintainer, one single point of failure. When the > >>> maintainer is busy or offline (vacations?) then everybody > >>> is stuck. > >>> > >>> This is usually solved by adding co-maintainers. > >>> > >>> Juan, would you accept having co-maintainers helping you > >>> dealing with the merge process? I'm not volunteering, but > >>> this can be a good opportunity to make a formal request to > >>> the community. > >>> > >>> Regards, > >>> > >>> Phil. > >>> > >> > >> Thanks Philippe, > >> > >> I would like to highlight to the QEMU community here how important this is for SUSE, > >> > >> to see progress for all the series in the migration area that are currently still waiting and competing for attention. > >> > >> The specific features and improvements we are developing or helping to review are a priority for us, > >> and we are concerned about the rate of progress with the existing governance processes. > >> > >> Fabiano is investing a lot of his attention to this area, with features, bugfixes and reviews, > >> but of course it is up to the community as a whole to address the issue so that reviewed work is merged. > >> > >> My attempt here is to make sure that it is recognized as a problem, so it can be hopefully be addressed by the community in a timely fashion, > >> and we can all benefit from the already developed and reviewed work that is pending. > >> > >> Thanks! > >> > >> CLaudio > >> > >> > > > > Hi Juan, any comments? Would additional help for co-maintenance of live migration help? > > How can we make things proceed? > > > > From our (SUSE) side we are willing to help as much as we can, and all options are open, > > whatever it takes to get the multiple series currently waiting to flow again. > > > > Thanks, > > > > Claudio > > Hi any news here? > > We continue to see the migration area of QEMU as basically blocked; > > there are a number of reviewed series out and little progress in merging them, > as well as a number of improvements not posted to the list at all due to the situation being completely bottlenecked. > > Would a co-maintenance of migration/ from Fabiano be an option? > > Should we organize a call to discuss this if the mailing list does not suffice to discuss this topic? Yes we can. Juan will be back next Monday. Before he left, he told me that he's preparing the pull. If next week there's still no pull from migration side then I suppose someone should start to pick up patches and send PR. I would volunteer myself already; I should have already perpared a pull a long time ago if I got ack from Juan. If Fabiano would like to that'll also be nice. I don't know how that works without delegation from the current (solo) maintainer, though, for either of us to become a maintainer. Before that, Fabiano can already propose a patch as at least a Reviewer without the need of any delegation from anyone, as he already did lots of work in that regard, assume he'll keep doing so to support the migration subsystem. I hope Juan will start to figure things out next week. Thanks, -- Peter Xu ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] 2023-09-27 13:56 ` Peter Xu @ 2023-09-27 14:36 ` Daniel P. Berrangé 2023-09-27 15:15 ` Peter Xu 0 siblings, 1 reply; 17+ messages in thread From: Daniel P. Berrangé @ 2023-09-27 14:36 UTC (permalink / raw) To: Peter Xu Cc: Claudio Fontana, Juan Quintela, Paolo Bonzini, Peter Maydell, Fabiano Rosas, Steve Sistare, qemu-devel, Philippe Mathieu-Daudé On Wed, Sep 27, 2023 at 09:56:44AM -0400, Peter Xu wrote: > Juan will be back next Monday. Before he left, he told me that he's > preparing the pull. > > If next week there's still no pull from migration side then I suppose > someone should start to pick up patches and send PR. I would volunteer > myself already; I should have already perpared a pull a long time ago if I > got ack from Juan. If Fabiano would like to that'll also be nice. I don't > know how that works without delegation from the current (solo) maintainer, > though, for either of us to become a maintainer. Even if not actively sending a PR, a possible starting point that could be done today, would be for someone to put up a gitlab.com branch that contains all the outstanding patch series that are considered ready to merge and validate a CI pipeline. That would both serve as a base for further work, and might be useful to Juan in assembling the next pull request. > Before that, Fabiano can already propose a patch as at least a Reviewer > without the need of any delegation from anyone, as he already did lots of > work in that regard, assume he'll keep doing so to support the migration > subsystem. Yes, anyone is free to self-propose themselves as reviewers. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] 2023-09-27 14:36 ` Daniel P. Berrangé @ 2023-09-27 15:15 ` Peter Xu 0 siblings, 0 replies; 17+ messages in thread From: Peter Xu @ 2023-09-27 15:15 UTC (permalink / raw) To: Daniel P. Berrangé Cc: Claudio Fontana, Juan Quintela, Paolo Bonzini, Peter Maydell, Fabiano Rosas, Steve Sistare, qemu-devel, Philippe Mathieu-Daudé On Wed, Sep 27, 2023 at 03:36:16PM +0100, Daniel P. Berrangé wrote: > Even if not actively sending a PR, a possible starting point that could > be done today, would be for someone to put up a gitlab.com branch that > contains all the outstanding patch series that are considered ready > to merge and validate a CI pipeline. That would both serve as a base for > further work, and might be useful to Juan in assembling the next pull > request. Right. Though that'll be slightly conter-productive if Juan already has a branch that contains everything for a pull covering patches until two weeks ago. I think before he left he has that on hand, maybe also tested a bit over the branch. I actually talked to him on taking that branch over for this time if he's busy, but unfortunately that conversation discontinued.. Having another branch has the risk that we'll have two base branches, if Juan's branch will be sent out as the final pull next week and get merged. But I do agree things need to be done if the pull doesn't come next week. Thanks, -- Peter Xu ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] 2023-09-27 13:14 ` migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] Claudio Fontana 2023-09-27 13:56 ` Peter Xu @ 2023-09-27 14:31 ` Daniel P. Berrangé 1 sibling, 0 replies; 17+ messages in thread From: Daniel P. Berrangé @ 2023-09-27 14:31 UTC (permalink / raw) To: Claudio Fontana Cc: Juan Quintela, Paolo Bonzini, Peter Maydell, Peter Xu, Fabiano Rosas, Steve Sistare, qemu-devel, Philippe Mathieu-Daudé On Wed, Sep 27, 2023 at 03:14:29PM +0200, Claudio Fontana wrote: > On 9/13/23 15:00, Claudio Fontana wrote: > > On 8/30/23 15:09, Claudio Fontana wrote: > >> On 8/22/23 15:25, Philippe Mathieu-Daudé wrote: > >>> Hi Claudio, > >>> > >>> On 22/8/23 14:00, Claudio Fontana wrote: > >>>> Hello, > >>>> > >>>> this series is all reviewed, > >>>> > >>>> and is needed as a precondition for further work to improve dramatically the performance of virsh save, virsh restore > >>>> when migrating to disk, can it be merged? > >>> > >>> $ ./scripts/get_maintainer.pl -f migration/meson.build > >>> Juan Quintela <quintela@redhat.com> (maintainer:Migration) > >>> Peter Xu <peterx@redhat.com> (reviewer:Migration) > >>> Leonardo Bras <leobras@redhat.com> (reviewer:Migration) > >>> qemu-devel@nongnu.org (open list:All patches CC here) > >>> > >>> One maintainer, one single point of failure. When the > >>> maintainer is busy or offline (vacations?) then everybody > >>> is stuck. > >>> > >>> This is usually solved by adding co-maintainers. > >>> > >>> Juan, would you accept having co-maintainers helping you > >>> dealing with the merge process? I'm not volunteering, but > >>> this can be a good opportunity to make a formal request to > >>> the community. > >> > >> I would like to highlight to the QEMU community here how important this is for SUSE, > >> > >> to see progress for all the series in the migration area that are currently still waiting and competing for attention. > >> > >> The specific features and improvements we are developing or helping to review are a priority for us, > >> and we are concerned about the rate of progress with the existing governance processes. > >> > >> Fabiano is investing a lot of his attention to this area, with features, bugfixes and reviews, > >> but of course it is up to the community as a whole to address the issue so that reviewed work is merged. > >> > >> My attempt here is to make sure that it is recognized as a problem, so it can be hopefully be addressed by the community in a timely fashion, > >> and we can all benefit from the already developed and reviewed work that is pending. > >> > > > > Hi Juan, any comments? Would additional help for co-maintenance of live migration help? > > How can we make things proceed? > > > > From our (SUSE) side we are willing to help as much as we can, and all options are open, > > whatever it takes to get the multiple series currently waiting to flow again. > > > > Thanks, > > > > Claudio > > Hi any news here? > > We continue to see the migration area of QEMU as basically blocked; > > there are a number of reviewed series out and little progress in merging them, > as well as a number of improvements not posted to the list at all due to the situation being completely bottlenecked. > > Would a co-maintenance of migration/ from Fabiano be an option? > > Should we organize a call to discuss this if the mailing list does not suffice to discuss this topic? FWIW, in response to your previous mail, I had suggested to Peter Xu in private that he would make a good candidate of co-maintainer for migration, given he is already a nominated reviewer and has been actively reviewing migration patches for a long while. Migration did have 2 maintainers until earlier in this year when David Gilbert moved on to other things, and I think we can all see that this has had an unfortunate impact on productivity in the migration subsystem that needs to be solved. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2023-09-27 15:15 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-30 14:25 [PATCH V4 0/2] migration file URI Steve Sistare 2023-06-30 14:25 ` [PATCH V4 1/2] migration: " Steve Sistare 2023-08-30 13:16 ` Daniel P. Berrangé 2023-08-30 14:15 ` Steven Sistare 2023-09-08 10:52 ` Daniel P. Berrangé 2023-09-08 14:23 ` Steven Sistare 2023-06-30 14:25 ` [PATCH V4 2/2] migration: file URI offset Steve Sistare 2023-07-13 21:26 ` [PATCH V4 0/2] migration file URI Michael Galaxy 2023-08-22 12:00 ` Claudio Fontana 2023-08-22 13:25 ` Philippe Mathieu-Daudé 2023-08-30 13:09 ` Claudio Fontana 2023-09-13 13:00 ` Claudio Fontana 2023-09-27 13:14 ` migration maintenance, governance [Was: Re: [PATCH V4 0/2] migration file URI] Claudio Fontana 2023-09-27 13:56 ` Peter Xu 2023-09-27 14:36 ` Daniel P. Berrangé 2023-09-27 15:15 ` Peter Xu 2023-09-27 14:31 ` Daniel P. Berrangé
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).