[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC v2 8/9] HACK libxl_exec: Check QEMU status via QMP instead of xenstore
On Mon, Apr 16, 2018 at 06:32:26PM +0100, Anthony PERARD wrote: > When QEMU is restricted, the qemu on the receiving side cann't write > anything to xenstore once the migration is started. So it cann't tell > libxl that it is ready to continue running the guest. > > In order to find out if QEMU is ready, we can issue QMP commands and > check if it respond. > > But there is no QMP socket to connect to before qemu is started. But we > can uses different facility from qemu in order to setup some kind of > callback before starting QEMU. For that, we open a file descriptor and > give it to qemu. > > This patch creates a pipe, give the write-end to qemu, and wait for > something to be written to it. (We could check if it is actually the QMP > greeting message.) > > QEMU is asked to setup a QMP server on this pipe, but even if it is a > one-way only, qemu will write the QMP greeting message to the pipe. > This is done with: > -add-fd, to create a fdset which is use later. > -chardev 'file,path=/dev/fdset/1,append=true', this open a char device > on the write-end of the pipe, tell qemu that the FD is write-only, and > not to run truncate on it. > -mon, just start the QMP server on this new chardev. > > With that, qemu will start the QMP server on the write-only fd, which is > enough to have the QMP greeting message. At this point, the QMP socket > is ready, and I think qemu is in the main-loop and ready to start the > emulation and respond to QMP commands. > > This patch calls 'query-status', any response to that without error > means that QEMU is ready. If the status is "running", QEMU would already > have written the xenstore node if it could and is doing emulation. > (Any subsequent QMP command 'cont', libxl__qmp_resume(), is not > changing anything. If one adds '-S' to the QEMU command line, QEMU will > have the status "prelaunch" as a response to 'query-status', then QEMU > can be asked to start emulation with 'cont' via QMP.) > > This patch copies most of "xswait" and call it "qmpwait". This is > probably not the best way forward due to duplication. > > Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> > --- This email should have: Changes in RFC v2: - Have QEMU throw a event instead of polling on connect() to the QMP socket -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |