[libvirt] [PATCHv3 1/4] Populate domid field of devices for libxenlight
Jim Fehlig
jfehlig at novell.com
Tue May 31 02:26:11 UTC 2011
Markus Groß wrote:
> This patch fixes the population of the
> libxenlight data structures. Now the devices
> should be removed correctly from the xenstore
> if they are detached.
>
ACK. I've pushed this patch since it is a bug fix to the new disk
attach/detach support in the libxenlight driver.
Thanks Markus,
Jim
> ---
> src/libxl/libxl_conf.c | 20 +++++++++++++-------
> src/libxl/libxl_conf.h | 10 ++++++----
> src/libxl/libxl_driver.c | 6 +++---
> 3 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
> index b58678a..0f6035e 100644
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -479,7 +479,8 @@ error:
> }
>
> int
> -libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
> +libxlMakeDisk(virDomainDefPtr def, virDomainDiskDefPtr l_disk,
> + libxl_device_disk *x_disk)
> {
> if (l_disk->src && (x_disk->pdev_path = strdup(l_disk->src)) == NULL) {
> virReportOOMError();
> @@ -537,6 +538,8 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
> x_disk->readwrite = !l_disk->readonly;
> x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0;
>
> + x_disk->domid = def->id;
> +
> return 0;
> }
>
> @@ -554,7 +557,7 @@ libxlMakeDiskList(virDomainDefPtr def, libxl_domain_config *d_config)
> }
>
> for (i = 0; i < ndisks; i++) {
> - if (libxlMakeDisk(l_disks[i], &x_disks[i]) < 0)
> + if (libxlMakeDisk(def, l_disks[i], &x_disks[i]) < 0)
> goto error;
> }
>
> @@ -571,11 +574,13 @@ error:
> }
>
> int
> -libxlMakeNic(virDomainNetDefPtr l_nic, libxl_device_nic *x_nic)
> +libxlMakeNic(virDomainDefPtr def, virDomainNetDefPtr l_nic,
> + libxl_device_nic *x_nic)
> {
> // TODO: Where is mtu stored?
> //x_nics[i].mtu = 1492;
>
> + x_nic->domid = def->id;
> memcpy(x_nic->mac, l_nic->mac, sizeof(libxl_mac));
>
> if (l_nic->model && !STREQ(l_nic->model, "netfront")) {
> @@ -625,7 +630,7 @@ libxlMakeNicList(virDomainDefPtr def, libxl_domain_config *d_config)
> for (i = 0; i < nnics; i++) {
> x_nics[i].devid = i;
>
> - if (libxlMakeNic(l_nics[i], &x_nics[i]))
> + if (libxlMakeNic(def, l_nics[i], &x_nics[i]))
> goto error;
> }
>
> @@ -642,8 +647,8 @@ error:
> }
>
> int
> -libxlMakeVfb(libxlDriverPrivatePtr driver, virDomainGraphicsDefPtr l_vfb,
> - libxl_device_vfb *x_vfb)
> +libxlMakeVfb(libxlDriverPrivatePtr driver, virDomainDefPtr def,
> + virDomainGraphicsDefPtr l_vfb, libxl_device_vfb *x_vfb)
> {
> int port;
>
> @@ -694,6 +699,7 @@ libxlMakeVfb(libxlDriverPrivatePtr driver, virDomainGraphicsDefPtr l_vfb,
> }
> break;
> }
> + x_vfb->domid = def->id;
> return 0;
> }
>
> @@ -724,7 +730,7 @@ libxlMakeVfbList(libxlDriverPrivatePtr driver,
> libxl_device_vfb_init(&x_vfbs[i], i);
> libxl_device_vkb_init(&x_vkbs[i], i);
>
> - if (libxlMakeVfb(driver, l_vfbs[i], &x_vfbs[i]) < 0)
> + if (libxlMakeVfb(driver, def, l_vfbs[i], &x_vfbs[i]) < 0)
> goto error;
> }
>
> diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
> index 5707b4e..bf5a50d 100644
> --- a/src/libxl/libxl_conf.h
> +++ b/src/libxl/libxl_conf.h
> @@ -90,12 +90,14 @@ virCapsPtr
> libxlMakeCapabilities(libxl_ctx *ctx);
>
> int
> -libxlMakeDisk(virDomainDiskDefPtr l_dev, libxl_device_disk *x_dev);
> +libxlMakeDisk(virDomainDefPtr def, virDomainDiskDefPtr l_dev,
> + libxl_device_disk *x_dev);
> int
> -libxlMakeNic(virDomainNetDefPtr l_nic, libxl_device_nic *x_nic);
> +libxlMakeNic(virDomainDefPtr def, virDomainNetDefPtr l_nic,
> + libxl_device_nic *x_nic);
> int
> -libxlMakeVfb(libxlDriverPrivatePtr driver, virDomainGraphicsDefPtr l_vfb,
> - libxl_device_vfb *x_vfb);
> +libxlMakeVfb(libxlDriverPrivatePtr driver, virDomainDefPtr def,
> + virDomainGraphicsDefPtr l_vfb, libxl_device_vfb *x_vfb);
>
> int
> libxlBuildDomainConfig(libxlDriverPrivatePtr driver,
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 312d414..5463b90 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -2252,7 +2252,7 @@ libxlDomainChangeEjectableMedia(libxlDomainObjPrivatePtr priv,
> return -1;
> }
>
> - if (libxlMakeDisk(disk, &x_disk) < 0)
> + if (libxlMakeDisk(vm->def, disk, &x_disk) < 0)
> goto cleanup;
>
> if ((ret = libxl_cdrom_insert(&priv->ctx, vm->def->id, &x_disk)) < 0) {
> @@ -2307,7 +2307,7 @@ libxlDomainAttachDeviceDiskLive(libxlDomainObjPrivatePtr priv,
> goto cleanup;
> }
>
> - if (libxlMakeDisk(l_disk, &x_disk) < 0)
> + if (libxlMakeDisk(vm->def, l_disk, &x_disk) < 0)
> goto cleanup;
>
> if ((ret = libxl_device_disk_add(&priv->ctx, vm->def->id,
> @@ -2360,7 +2360,7 @@ libxlDomainDetachDeviceDiskLive(libxlDomainObjPrivatePtr priv,
>
> l_disk = vm->def->disks[i];
>
> - if (libxlMakeDisk(l_disk, &x_disk) < 0)
> + if (libxlMakeDisk(vm->def, l_disk, &x_disk) < 0)
> goto cleanup;
>
> if ((ret = libxl_device_disk_del(&priv->ctx, &x_disk,
>
More information about the libvir-list
mailing list