|
[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
Ian Jackson wrote:
> 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;
Yes, that's right.
>
>> @@ -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.
Thanks for the review, and for taking care of this last comment.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |