commit 3bcf91cbbd9a18db9ae7d594ffde7979774ed512 Author: Roger Pau Monne Date: Wed Feb 12 11:15:17 2014 +0100 libxl: local attach support for PHY backends using scripts Allow disks using the PHY backend to locally attach if using a script. Signed-off-by: Roger Pau Monnà Suggested-by: Ian Campbell Index: xen-4.5.0-testing/tools/libxl/libxl.c =================================================================== --- xen-4.5.0-testing.orig/tools/libxl/libxl.c +++ xen-4.5.0-testing/tools/libxl/libxl.c @@ -3006,6 +3006,16 @@ void libxl__device_disk_local_initiate_a switch (disk->backend) { case LIBXL_DISK_BACKEND_PHY: + if (disk->script != NULL) { + LOG(DEBUG, "trying to locally attach PHY device %s with script %s", + disk->pdev_path, disk->script); + libxl__prepare_ao_device(ao, &dls->aodev); + dls->aodev.callback = local_device_attach_cb; + device_disk_add(egc, LIBXL_TOOLSTACK_DOMID, disk, + &dls->aodev, libxl__alloc_vdev, + (void *) blkdev_start); + return; + } LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "locally attaching PHY disk %s", disk->pdev_path); dev = disk->pdev_path; @@ -3085,7 +3095,7 @@ static void local_device_attach_cb(libxl } dev = GCSPRINTF("/dev/%s", disk->vdev); - LOG(DEBUG, "locally attaching qdisk %s", dev); + LOG(DEBUG, "locally attached disk %s", dev); rc = libxl__device_from_disk(gc, LIBXL_TOOLSTACK_DOMID, disk, &device); if (rc < 0) @@ -3125,6 +3135,7 @@ void libxl__device_disk_local_initiate_d if (!dls->diskpath) goto out; switch (disk->backend) { + case LIBXL_DISK_BACKEND_PHY: case LIBXL_DISK_BACKEND_QDISK: if (disk->vdev != NULL) { GCNEW(device); @@ -3142,7 +3153,6 @@ void libxl__device_disk_local_initiate_d /* disk->vdev == NULL; fall through */ 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. */