[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] libxl: fix migration of PV and PVH domUs with and without qemu
On Thu, May 09, 2019 at 05:54:38PM +0200, Olaf Hering wrote: > Am Fri, 3 May 2019 17:29:53 +0200 > schrieb Roger Pau Monné <roger.pau@xxxxxxxxxx>: > > > On Fri, May 03, 2019 at 04:11:32PM +0200, Olaf Hering wrote: > > > Am Fri, 3 May 2019 13:04:11 +0200 > > > schrieb Roger Pau Monné <roger.pau@xxxxxxxxxx>: > > > > > > > Wouldn't it be easier to leave libxl__need_xenpv_qemu alone and just > > > > use the contents of the migration stream to decide whether to launch a > > > > QEMU for the PV backends or not? ie: just parsing the domain config on > > > > the migration stream should be enough for the destination side to > > > > decide whether a QEMU is needed in order to handle the PV backends? > > > > > > I think that is done anyway. How would the receiving side know what to > > > do? > > > > Hm, OK. I will wait for v3 with the domid stuff fixed. > > I think it will be as simple as this. In the end b_info.device_model_version > must be set prior the call to store_libxl_entry. The patch below looks sensible to me, and it's more like what I was expecting would be needed to solve this issue. > > --- a/tools/libxl/libxl_create.c > +++ b/tools/libxl/libxl_create.c > @@ -92,9 +92,6 @@ int libxl__domain_build_info_setdefault( > } else { > b_info->device_model_version = > libxl__default_device_model(gc); > } > - } else { > - b_info->device_model_version = > - LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN; > } > if (b_info->device_model_version > == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN) { > @@ -969,6 +966,18 @@ static void initiate_domain_create(libxl > dcs->sdss.dm.guest_domid = 0; /* means we haven't spawned */ > > /* > + * libxl__domain_build_info_setdefault sets this only for HVM > + * set it before store_libxl_entry() > + */ > + if (d_config->b_info.device_model_version > + == LIBXL_DEVICE_MODEL_VERSION_UNKNOWN) { > + ret = libxl__need_xenpv_qemu(gc, d_config); > + if (ret > 0) Since libxl__need_xenpv_qemu can fail, what about doing something like: switch ( (ret = libxl__need_xenpv_qemu(gc, d_config)) ) { case 1: d_config->b_info.device_model_version = LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN; break; case 0: break; default: LOGEVD(ERROR, ret, domid, "Unable to determine QEMU requisite"); goto error_out; } Note the error message wording is not very good, probably an English speaker would come up with a better message. Thanks for looking into this! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |