[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] tools: cleanup domain save switch_qemu_logdirty callback
On Tue, 2010-10-19 at 22:12 +0100, Brendan Cully wrote: > On Tuesday, 19 October 2010 at 09:21, Ian Campbell wrote: > > # HG changeset patch > > # User Ian Campbell <ian.campbell@xxxxxxxxxx> > > # Date 1287476238 -3600 > > # Node ID 0b5d85ea10f8fff3f654c564c0e66900e83e8012 > > # Parent ca91b58834a35c70f33f6ceb28c02c60f190b6ed > > tools: cleanup domain save switch_qemu_logdirty callback > > > > Move the function into struct save_callbacks with the others and add > > the void *closure to the callback arguments. > > > > Add and propagate an error return code from the callback. > > > > Use this in libxl to pass the save context to > > libxl__domain_suspend_common_switch_qemu_logdirty allowing us to reuse > > the parent's xenstore handle, gc context etc. > > > > Also add an apparently missing libxl__free_all to > > libxl__domain_suspend_common. > > > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > > --- > > Changes from v1: > > Compile test from missed call to xc_domain_save in > > tools/python/xen/lowlevel/checkpoint/libcheckpoint.c > > Changes from v2: > > Check for missing callback and return error. > > Similarly update tools/libxc/ia64/xc_ia64_linux_save.c > > Add return value to callback and propagate failure. > > Update comment to indicate that closure is last argument to callback > > (all existing callbacks only had the one argument so the first/last > > distinction is moot) > > This reads well, but I don't understand the purpose of all the return > code juggling you've done in libcheckpoint.c here: It makes the callback return code match the convention used by xc_domain_save itself. It isn't necessarily the best convention but I thought the overall consistency was more important. Ian. > > > diff -r ca91b58834a3 -r 0b5d85ea10f8 > > tools/python/xen/lowlevel/checkpoint/libcheckpoint.c > > --- a/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c Tue Oct 19 > > 09:07:47 2010 +0100 > > +++ b/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c Tue Oct 19 > > 09:17:18 2010 +0100 > > @@ -164,9 +164,9 @@ void checkpoint_close(checkpoint_state* > > > > /* we toggle logdirty ourselves around the xc_domain_save call -- > > * it avoids having to pass around checkpoint_state */ > > -static void noop_switch_logdirty(int domid, unsigned enable) > > +static int noop_switch_logdirty(int domid, unsigned enable, void *data) > > { > > - return; > > + return 0; > > } > > > > int checkpoint_start(checkpoint_state* s, int fd, > > @@ -185,12 +185,13 @@ int checkpoint_start(checkpoint_state* s > > hvm = s->domtype > dt_pv; > > if (hvm) { > > flags |= XCFLAGS_HVM; > > - if ((rc = switch_qemu_logdirty(s, 1))) > > - return rc; > > + if (!switch_qemu_logdirty(s, 1)) > > + return -1; > > } > > > > - rc = xc_domain_save(s->xch, fd, s->domid, 0, 0, flags, callbacks, hvm, > > - noop_switch_logdirty); > > + callbacks->switch_qemu_logdirty = noop_switch_logdirty; > > + > > + rc = xc_domain_save(s->xch, fd, s->domid, 0, 0, flags, callbacks, hvm); > > > > if (hvm) > > switch_qemu_logdirty(s, 0); > > @@ -540,7 +541,7 @@ static int switch_qemu_logdirty(checkpoi > > strcpy(tail, "ret"); > > if (!xs_watch(s->xsh, path, "qemu-logdirty-ret")) { > > s->errstr = "error watching qemu logdirty return"; > > - return -1; > > + return 1; > > } > > /* null fire. XXX unify with shutdown watch! */ > > vec = xs_read_watch(s->xsh, &len); > > @@ -550,7 +551,7 @@ static int switch_qemu_logdirty(checkpoi > > cmd = enable ? "enable" : "disable"; > > if (!xs_write(s->xsh, XBT_NULL, path, cmd, strlen(cmd))) { > > s->errstr = "error signalling qemu logdirty"; > > - return -1; > > + return 1; > > } > > > > vec = xs_read_watch(s->xsh, &len); > > @@ -564,7 +565,7 @@ static int switch_qemu_logdirty(checkpoi > > if (len) > > free(response); > > s->errstr = "qemu logdirty command failed"; > > - return -1; > > + return 1; > > } > > free(response); > > fprintf(stderr, "qemu logdirty mode: %s\n", cmd); > > I haven't compiled or run this, I'll wait for it to hit the tree. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |