|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v11 03/17] libxl: convert libxl__device_disk_local_attach to an async op
Roger Pau Monne writes ("[PATCH v11 03/17] libxl: convert
libxl__device_disk_local_attach to an async op"):
> This will be needed in future patches, when libxl__device_disk_add
> becomes async also. Create a new status structure that defines the
> local attach of a disk device and use it in
> libxl__device_disk_local_attach.
Thanks. Close...
> +void libxl__device_disk_local_initiate_detach(libxl__egc *egc,
> + libxl__disk_local_state *dls)
> {
> + STATE_AO_GC(dls->ao);
> int rc = 0;
> + libxl_device_disk *disk = &dls->disk;
> + libxl__device *device;
> + libxl__ao_device *aodev = &dls->aodev;
> + libxl__prepare_ao_device(ao, aodev);
> +
> + if (!dls->diskpath) goto out;
>
> switch (disk->backend) {
> case LIBXL_DISK_BACKEND_QDISK:
...
> + rc = libxl__device_from_disk(gc, LIBXL_TOOLSTACK_DOMID,
> + disk, device);
> + if (rc != 0) goto out;
...
> default:
> /*
> * Nothing to do for PHYSTYPE_PHY.
> * For other device types assume that the blktap2 process is
> * needed by the soon to be started domain and do nothing.
> */
> - break;
> + goto out;
> }
>
> +out:
> + local_device_detach_cb(egc, aodev);
Doesn't this lose the rc ? Since...
...
> +static void local_device_detach_cb(libxl__egc *egc, libxl__ao_device *aodev)
> +{
> + STATE_AO_GC(aodev->ao);
> + libxl__disk_local_state *dls = CONTAINER_OF(aodev, *dls, aodev);
> + int rc;
> +
> + if (aodev->rc) {
... this picks the rc out of the aodev. And you don't set aodev->rc.
The general code in libxl__device_disk_local_initiate_detach expects
(as is conventional) to set the local variable rc and `goto out'. So
I think you need
+ aodev->rc = rc;
> @@ -2097,10 +2142,10 @@ struct libxl__bootloader_state {
> /* Should be zeroed by caller on entry. Will be filled in by
> * bootloader machinery; represents the local attachment of the
> * disk for the benefit of the bootloader. Must be detached by
> - * the caller using libxl__device_disk_local_detach, but only
> + * the caller using libxl__device_disk_local_initiate_detach, but only
> * after the domain's kernel and initramfs have been loaded into
> * memory and the file references disposed of. */
I queried this and you replied:
> I didn't change this comment, but if you want I can do that in this
> patch. The bootloader makes a copy of the kernel/initramfs to somewhere,
> and that is what we load to the memory.
Right. The comment is wrong, but you're not making it wronger, so
this is something for me to fix up.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |