From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:53156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcIJE-0002tV-F9 for qemu-devel@nongnu.org; Thu, 30 Jun 2011 10:33:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QcIJC-0002CL-T2 for qemu-devel@nongnu.org; Thu, 30 Jun 2011 10:33:36 -0400 Received: from smtp.eu.citrix.com ([62.200.22.115]:46328) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QcIJC-0002C1-Go for qemu-devel@nongnu.org; Thu, 30 Jun 2011 10:33:34 -0400 Date: Thu, 30 Jun 2011 15:37:56 +0100 From: Stefano Stabellini In-Reply-To: <4E0C6802.6080200@suse.de> Message-ID: References: <1309346169-14554-1-git-send-email-stefano.stabellini@eu.citrix.com> <4E0C6802.6080200@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Subject: Re: [Qemu-devel] [PATCH] xen: introduce xen_change_state_handler List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: Anthony Perard , "xen-devel@lists.xensource.com" , "qemu-devel@nongnu.org" , Stefano Stabellini On Thu, 30 Jun 2011, Alexander Graf wrote: > On 06/29/2011 01:16 PM, stefano.stabellini@eu.citrix.com wrote: > > From: Anthony PERARD > > > > Remove the call to xenstore_record_dm_state from xen_main_loop_prepare > > that is HVM specific. > > Add a new vm_change_state_handler shared between xen_pv and xen_hvm > > machines to record the VM state to xenstore. > > > > Signed-off-by: Anthony PERARD > > Signed-off-by: Stefano Stabellini > > --- > > xen-all.c | 25 ++++++++++++++++++------- > > 1 files changed, 18 insertions(+), 7 deletions(-) > > > > diff --git a/xen-all.c b/xen-all.c > > index 3fd04ef..e8da35f 100644 > > --- a/xen-all.c > > +++ b/xen-all.c > > @@ -797,12 +797,17 @@ void xenstore_store_pv_console_info(int i, CharDriverState *chr) > > } > > } > > > > -static void xenstore_record_dm_state(XenIOState *s, const char *state) > > +static void xenstore_record_dm_state(struct xs_handle *xs, const char *state) > > { > > char path[50]; > > > > + if (xs == NULL) { > > + fprintf(stderr, "xenstore connection not initialized\n"); > > + exit(1); > > + } > > + > > snprintf(path, sizeof (path), "/local/domain/0/device-model/%u/state", xen_domid); > > - if (!xs_write(s->xenstore, XBT_NULL, path, state, strlen(state))) { > > + if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) { > > fprintf(stderr, "error recording dm state\n"); > > exit(1); > > } > > @@ -823,15 +828,20 @@ static void xen_main_loop_prepare(XenIOState *state) > > if (evtchn_fd != -1) { > > qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, state); > > } > > - > > - /* record state running */ > > - xenstore_record_dm_state(state, "running"); > > } > > > > > > /* Initialise Xen */ > > > > -static void xen_vm_change_state_handler(void *opaque, int running, int reason) > > +static void xen_change_state_handler(void *opaque, int running, int reason) > > +{ > > + if (running) { > > + /* record state running */ > > + xenstore_record_dm_state(xenstore, "running"); > > + } > > So where is this ever executed in the PV case? qemu_add_vm_change_state_handler(xen_change_state_handler, NULL) is now called by xen_init, that is common between xen_pv and xen_fv machines From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH] xen: introduce xen_change_state_handler Date: Thu, 30 Jun 2011 15:37:56 +0100 Message-ID: References: <1309346169-14554-1-git-send-email-stefano.stabellini@eu.citrix.com> <4E0C6802.6080200@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Return-path: In-Reply-To: <4E0C6802.6080200@suse.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Alexander Graf Cc: Anthony, Perard , "xen-devel@lists.xensource.com" , "qemu-devel@nongnu.org" , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org On Thu, 30 Jun 2011, Alexander Graf wrote: > On 06/29/2011 01:16 PM, stefano.stabellini@eu.citrix.com wrote: > > From: Anthony PERARD > > > > Remove the call to xenstore_record_dm_state from xen_main_loop_prepare > > that is HVM specific. > > Add a new vm_change_state_handler shared between xen_pv and xen_hvm > > machines to record the VM state to xenstore. > > > > Signed-off-by: Anthony PERARD > > Signed-off-by: Stefano Stabellini > > --- > > xen-all.c | 25 ++++++++++++++++++------- > > 1 files changed, 18 insertions(+), 7 deletions(-) > > > > diff --git a/xen-all.c b/xen-all.c > > index 3fd04ef..e8da35f 100644 > > --- a/xen-all.c > > +++ b/xen-all.c > > @@ -797,12 +797,17 @@ void xenstore_store_pv_console_info(int i, CharDriverState *chr) > > } > > } > > > > -static void xenstore_record_dm_state(XenIOState *s, const char *state) > > +static void xenstore_record_dm_state(struct xs_handle *xs, const char *state) > > { > > char path[50]; > > > > + if (xs == NULL) { > > + fprintf(stderr, "xenstore connection not initialized\n"); > > + exit(1); > > + } > > + > > snprintf(path, sizeof (path), "/local/domain/0/device-model/%u/state", xen_domid); > > - if (!xs_write(s->xenstore, XBT_NULL, path, state, strlen(state))) { > > + if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) { > > fprintf(stderr, "error recording dm state\n"); > > exit(1); > > } > > @@ -823,15 +828,20 @@ static void xen_main_loop_prepare(XenIOState *state) > > if (evtchn_fd != -1) { > > qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, state); > > } > > - > > - /* record state running */ > > - xenstore_record_dm_state(state, "running"); > > } > > > > > > /* Initialise Xen */ > > > > -static void xen_vm_change_state_handler(void *opaque, int running, int reason) > > +static void xen_change_state_handler(void *opaque, int running, int reason) > > +{ > > + if (running) { > > + /* record state running */ > > + xenstore_record_dm_state(xenstore, "running"); > > + } > > So where is this ever executed in the PV case? qemu_add_vm_change_state_handler(xen_change_state_handler, NULL) is now called by xen_init, that is common between xen_pv and xen_fv machines