|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 08/19] libxl: wait for qemu to acknowledge logdirty command
On Thu, 2012-06-14 at 16:47 +0100, Ian Jackson wrote:
> Ian Campbell writes ("Re: [Xen-devel] [PATCH 08/19] libxl: wait for qemu to
> acknowledge logdirty command"):
> > On Fri, 2012-06-08 at 18:34 +0100, Ian Jackson wrote:
> > > The current migration code in libxl instructs qemu to start or stop
> > > logdirty, but it does not wait for an acknowledgement from qemu before
> > > continuing. This might lead to memory corruption (!)
> ...
> > > +static void logdirty_init(libxl__logdirty_switch *lds)
> > > +{
> > > + lds->cmd_path = 0;
> > > + libxl__ev_xswatch_init(&lds->watch);
> > > + libxl__ev_time_init(&lds->timeout);
> >
> > I meant to mention this once before when reviewing some patch or other
> > but I'm not sure I actually did, so at the risk of repeating myself:
> >
> > This watch with timeout pattern seems to be reasonably common (in fact,
> > I'm not sure we have any watches without a timeout). It might be a
> > candidate for a specific helper routine in the future?
>
> Perhaps. We should think about this.
Yes, I should have said the phrase "4.3" in there somewhere.
> I'm not sure it's necessary
> now. The benefit might be relatively small, as the callback function
> would more complicated.
Could still have two callbacks, and just helpers for the setup &
teardown phases?
> Perhaps we should integrate the single xs read which most of these callers
> also have.
You mean pass in the value of the watched key? That's also a
possibility.
>
> > > +static void switch_logdirty_xswatch(libxl__egc *egc, libxl__ev_xswatch
> > > *watch,
> > > + const char *watch_path, const char
> > > *event_path)
> > > +{
> ...
> > > + out:
> > > + /* rc < 0: error
> > > + * rc == 0: ok, we are done
> > > + * rc == +1: need to keep waiting
> > > + */
> > > + libxl__xs_transaction_abort(gc, &t);
> > > +
> > > + if (!rc) {
> > > + switch_logdirty_done(egc,dss,1);
> > > + } else if (rc < 0) {
> > > + LOG(ERROR,"logdirty switch: response read failed (rc=%d)",rc);
> >
> > Is it only "response read failed" which can cause us to end up here,
> > looks like the read, rm etc could do it?
>
> Oh yes. I should fix that message. (All of these paths have already
> logged something already, but another message probably doesn't hurt.)
>
> Thanks,
> Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |