From: Jason Wang <jasowang@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: quintela@redhat.com, aliguori@us.ibm.com, rusty@rustcorp.com.au,
stefanha@linux.vnet.ibm.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [V4 PATCH 2/5] net: announce self after vm start
Date: Thu, 15 Mar 2012 14:11:17 +0800 [thread overview]
Message-ID: <4F618805.601@redhat.com> (raw)
In-Reply-To: <20120313142326.GD14931@redhat.com>
On 03/13/2012 10:23 PM, Michael S. Tsirkin wrote:
> On Tue, Mar 13, 2012 at 04:56:22PM +0800, Jason Wang wrote:
>> This patch moves qemu_announce_self() to vm_start() and add a new parameters to
>> control whether sending gratuitous packet is needed. There are several reasons
>> to do this:
>>
>> - Gratuitous packet is also needed when we resume a stopped vm or successfully
>> load a state.
> Why is it needed when we continue a stopped vm?
If we stop a vm for a little long time, the mac table entry in the
switch would also be expired. So we need to announce again.
>
>> - Sending gratuitous packets may be done through co-operation with guest, so
>> this work should be done after vm is started.
>>
>> Signed-off-by: Jason Wang<jasowang@redhat.com>
>> ---
>> gdbstub.c | 2 +-
>> migration.c | 5 ++---
>> monitor.c | 2 +-
>> qmp.c | 2 +-
>> savevm.c | 2 +-
>> sysemu.h | 2 +-
>> vl.c | 7 +++++--
>> 7 files changed, 12 insertions(+), 10 deletions(-)
>>
>> diff --git a/gdbstub.c b/gdbstub.c
>> index ef95ac2..f4d22e5 100644
>> --- a/gdbstub.c
>> +++ b/gdbstub.c
>> @@ -371,7 +371,7 @@ static inline void gdb_continue(GDBState *s)
>> #ifdef CONFIG_USER_ONLY
>> s->running_state = 1;
>> #else
>> - vm_start();
>> + vm_start(false);
>> #endif
>> }
>>
>> diff --git a/migration.c b/migration.c
>> index 00fa1e3..40332d2 100644
>> --- a/migration.c
>> +++ b/migration.c
>> @@ -88,14 +88,13 @@ void process_incoming_migration(QEMUFile *f)
>> fprintf(stderr, "load of migration failed\n");
>> exit(0);
>> }
>> - qemu_announce_self();
>> DPRINTF("successfully loaded vm state\n");
>>
>> /* Make sure all file formats flush their mutable metadata */
>> bdrv_invalidate_cache_all();
>>
>> if (autostart) {
>> - vm_start();
>> + vm_start(true);
>> } else {
>> runstate_set(RUN_STATE_PRELAUNCH);
>> }
>> @@ -274,7 +273,7 @@ static void migrate_fd_put_ready(void *opaque)
>> }
>> if (s->state != MIG_STATE_COMPLETED) {
>> if (old_vm_running) {
>> - vm_start();
>> + vm_start(false);
>> }
>> }
>> }
>> diff --git a/monitor.c b/monitor.c
>> index cbdfbad..0b63c11 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -2260,7 +2260,7 @@ static void do_loadvm(Monitor *mon, const QDict *qdict)
>> vm_stop(RUN_STATE_RESTORE_VM);
>>
>> if (load_vmstate(name) == 0&& saved_vm_running) {
>> - vm_start();
>> + vm_start(true);
>> }
>> }
>>
>> diff --git a/qmp.c b/qmp.c
>> index a182b51..252c842 100644
>> --- a/qmp.c
>> +++ b/qmp.c
>> @@ -160,7 +160,7 @@ void qmp_cont(Error **errp)
>> return;
>> }
>>
>> - vm_start();
>> + vm_start(true);
>> }
>>
>> void qmp_system_wakeup(Error **errp)
>> diff --git a/savevm.c b/savevm.c
>> index 5b59826..82b9d3a 100644
>> --- a/savevm.c
>> +++ b/savevm.c
>> @@ -2107,7 +2107,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
>>
>> the_end:
>> if (saved_vm_running)
>> - vm_start();
>> + vm_start(false);
>> }
>>
>> int load_vmstate(const char *name)
>> diff --git a/sysemu.h b/sysemu.h
>> index 98118cc..787edd4 100644
>> --- a/sysemu.h
>> +++ b/sysemu.h
>> @@ -34,7 +34,7 @@ void vm_state_notify(int running, RunState state);
>> #define VMRESET_SILENT false
>> #define VMRESET_REPORT true
>>
>> -void vm_start(void);
>> +void vm_start(bool announce);
>> void vm_stop(RunState state);
>> void vm_stop_force_state(RunState state);
>>
>> diff --git a/vl.c b/vl.c
>> index 65f11f2..4e04f82 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -1258,7 +1258,7 @@ void vm_state_notify(int running, RunState state)
>> }
>> }
>>
>> -void vm_start(void)
>> +void vm_start(bool announce)
>> {
>> if (!runstate_is_running()) {
>> cpu_enable_ticks();
>> @@ -1266,6 +1266,9 @@ void vm_start(void)
>> vm_state_notify(1, RUN_STATE_RUNNING);
>> resume_all_vcpus();
>> monitor_protocol_event(QEVENT_RESUME, NULL);
>> + if (announce) {
>> + qemu_announce_self();
>> + }
>> }
>> }
>>
>> @@ -3619,7 +3622,7 @@ int main(int argc, char **argv, char **envp)
>> exit(ret);
>> }
>> } else if (autostart) {
>> - vm_start();
>> + vm_start(false);
>> }
>>
>> os_setup_post();
next prev parent reply other threads:[~2012-03-15 6:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-13 8:56 [Qemu-devel] [V4 PATCH 0/5] Send the gratuitous packets by guest Jason Wang
2012-03-13 8:56 ` [Qemu-devel] [V4 PATCH 1/5] net: reset the count after rounds of announcing Jason Wang
2012-03-13 8:56 ` [Qemu-devel] [V4 PATCH 2/5] net: announce self after vm start Jason Wang
2012-03-13 9:18 ` Paolo Bonzini
2012-03-15 6:08 ` Jason Wang
2012-03-13 14:23 ` Michael S. Tsirkin
2012-03-15 6:11 ` Jason Wang [this message]
2012-03-13 8:56 ` [Qemu-devel] [V4 PATCH 3/5] net: model specific announcing support Jason Wang
2012-03-13 14:20 ` Michael S. Tsirkin
2012-03-13 8:56 ` [Qemu-devel] [V4 PATCH 4/5] virtio-net: notify guest to annouce itself Jason Wang
2012-03-13 14:18 ` Michael S. Tsirkin
2012-03-13 14:20 ` Michael S. Tsirkin
2012-03-13 8:56 ` [Qemu-devel] [V4 PATCH 5/5] virtio-net: compat guest announce support Jason Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F618805.601@redhat.com \
--to=jasowang@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rusty@rustcorp.com.au \
--cc=stefanha@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.