Message ID | 20231019190831.20363-6-quintela@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | migration: Check for duplicates on vmstate_register() | expand |
On 10/19/23 15:08, Juan Quintela wrote: > Each user network conection create a new slirp instance. We register > more than one slirp instance for number 0. > > qemu-system-x86_64: -netdev user,id=hs1: savevm_state_handler_insert: Detected duplicate SaveStateEntry: id=slirp, instance_id=0x0 > Broken pipe > ../../../../../mnt/code/qemu/full/tests/qtest/libqtest.c:195: kill_qemu() tried to terminate QEMU process but encountered exit status 1 (expected 0) > Aborted (core dumped) > > Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> > --- > net/slirp.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/net/slirp.c b/net/slirp.c > index c33b3e02e7..25b49c4526 100644 > --- a/net/slirp.c > +++ b/net/slirp.c > @@ -46,6 +46,7 @@ > #include "qapi/qmp/qdict.h" > #include "util.h" > #include "migration/register.h" > +#include "migration/vmstate.h" > #include "migration/qemu-file-types.h" > > static int get_str_sep(char *buf, int buf_size, const char **pp, int sep) > @@ -659,8 +660,8 @@ static int net_slirp_init(NetClientState *peer, const char *model, > * specific version? > */ > g_assert(slirp_state_version() == 4); > - register_savevm_live("slirp", 0, slirp_state_version(), > - &savevm_slirp_state, s->slirp); > + register_savevm_live("slirp", VMSTATE_INSTANCE_ID_ANY, > + slirp_state_version(), &savevm_slirp_state, s->slirp); > > s->poll_notifier.notify = net_slirp_poll_notify; > main_loop_poll_add_notifier(&s->poll_notifier);
diff --git a/net/slirp.c b/net/slirp.c index c33b3e02e7..25b49c4526 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -46,6 +46,7 @@ #include "qapi/qmp/qdict.h" #include "util.h" #include "migration/register.h" +#include "migration/vmstate.h" #include "migration/qemu-file-types.h" static int get_str_sep(char *buf, int buf_size, const char **pp, int sep) @@ -659,8 +660,8 @@ static int net_slirp_init(NetClientState *peer, const char *model, * specific version? */ g_assert(slirp_state_version() == 4); - register_savevm_live("slirp", 0, slirp_state_version(), - &savevm_slirp_state, s->slirp); + register_savevm_live("slirp", VMSTATE_INSTANCE_ID_ANY, + slirp_state_version(), &savevm_slirp_state, s->slirp); s->poll_notifier.notify = net_slirp_poll_notify; main_loop_poll_add_notifier(&s->poll_notifier);
Each user network conection create a new slirp instance. We register more than one slirp instance for number 0. qemu-system-x86_64: -netdev user,id=hs1: savevm_state_handler_insert: Detected duplicate SaveStateEntry: id=slirp, instance_id=0x0 Broken pipe ../../../../../mnt/code/qemu/full/tests/qtest/libqtest.c:195: kill_qemu() tried to terminate QEMU process but encountered exit status 1 (expected 0) Aborted (core dumped) Signed-off-by: Juan Quintela <quintela@redhat.com> --- net/slirp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)