|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 09/21] libxl: add save/restore support for qemu-xen in stubdomain [and 1 more messages]
On Mon, May 18, 2020 at 11:18 AM Ian Jackson <ian.jackson@xxxxxxxxxx> wrote:
>
> >
> Marek Marczykowski-Górecki writes ("Re: [PATCH v5 09/21] libxl: add
> save/restore support for qemu-xen in stubdomain"):
> > On Mon, May 18, 2020 at 03:15:17PM +0100, Ian Jackson wrote:
> > > Err, by "the qemu savefile pathname" I meant the pathname in dom0.
> > > I assume your wrapper script opens that and feeds it to the console.
> > > Is that right ?
> >
> > Not really a wrapper script. On dom0 side it is console backend (qemu)
> > instructed to connect the console to a file, instead of pty. I have
> > implemented similar feature in my xenconsoled patch series sent a while
> > ago (sent along with v2 of this series), but that series needs some more
> > love.
> >
> > On the stubdomain side, it is a script that launches qemu - opens a
> > /dev/hvc2, then pass the FD to qemu via -incoming option (which is
> > really constructed by libxl).
>
> Hi. Thanks for trying to help me understand. I was still confused
> though. I tried to explain another way and that helped me see what's
> going on.
>
> I think I understand now.
>
> For reference, my confusion was this:
>
> Jason Andryuk writes ("[PATCH v5 09/21] libxl: add save/restore support for
> qemu-xen in stubdomain"):
> > index bdc23554eb..45d0dd56f5 100644
> > --- a/tools/libxl/libxl_dm.c
> > +++ b/tools/libxl/libxl_dm.c
> > @@ -1744,10 +1744,17 @@ static int
> > libxl__build_device_model_args_new(libxl__gc *gc,
> > }
> >
> > if (state->saved_state) {
> > - /* This file descriptor is meant to be used by QEMU */
> > - *dm_state_fd = open(state->saved_state, O_RDONLY);
> > - flexarray_append(dm_args, "-incoming");
> > - flexarray_append(dm_args, GCSPRINTF("fd:%d",*dm_state_fd));
> > + if (is_stubdom) {
> > + /* Linux stubdomain connects specific FD to
> > STUBDOM_CONSOLE_RESTORE
> > + */
> > + flexarray_append(dm_args, "-incoming");
> > + flexarray_append(dm_args, "fd:3");
> > + } else {
> > + /* This file descriptor is meant to be used by QEMU */
> > + *dm_state_fd = open(state->saved_state, O_RDONLY);
> > + flexarray_append(dm_args, "-incoming");
> > + flexarray_append(dm_args, GCSPRINTF("fd:%d",*dm_state_fd));
> > + }
>
> In this hunk, the call
> *dm_state_fd = open(state->saved_state, O_RDONLY);
> becomes conditional. It is no longer executed in the stubdomain
> case.
>
> So then, who opens state->saved_state ? And how do they get told
> where it is ? If it's somewhere else in libxl, why doesn't it show up
> in this patch ?
>
> Posing the question liked that allowed me to see that the answer is
>
> console[i].output = GCSPRINTF("file:%s",
> libxl__device_model_savefile(gc, guest_domid));
>
> in spawn_stub_launch_dm. And it doesn't appear in the patch because
> it's already used for minios stub trad qemu and the same code is
> now going to be executed for linux stub moderm qemu.
Do you want the commit message to add a blurb about this? So the
message becomes:
"""
Rely on a wrapper script in stubdomain to attach relevant consoles to
qemu. The save console (1) must be attached to fdset/1. When
performing a restore, $STUBDOM_RESTORE_INCOMING_ARG must be replaced on
the qemu command line by "fd:$FD", where $FD is an open file descriptor
number to the restore console (2).
Existing libxl code (for dom0) already connects the stubdom's save &
restore console outputs to the save & restore files.
"""
-Jason
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |