[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxl/xl: support empty disk paths (ejected cdroms)
# HG changeset patch # User Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> # Date 1295978813 0 # Node ID 6ec61438713a2891a3f21f926c306bed2629d441 # Parent 787af706dadcdc445347c6cb9739af6ba497cbb2 libxl/xl: support empty disk paths (ejected cdroms) Support empty disk paths, including in domain config files, for compatibility with xend. This allows a domain to be created with a cdrom which is initially in the "ejected" (no cd present) state. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/libxl/libxl.c | 10 ++++++---- tools/libxl/libxl.h | 1 + tools/libxl/libxl_device.c | 2 ++ tools/libxl/xl_cmdimpl.c | 9 +++++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff -r 787af706dadc -r 6ec61438713a tools/libxl/libxl.c --- a/tools/libxl/libxl.c Tue Jan 25 17:02:47 2011 +0000 +++ b/tools/libxl/libxl.c Tue Jan 25 18:06:53 2011 +0000 @@ -646,8 +646,8 @@ int libxl_event_get_disk_eject_info(libx disk->backend_domid = 0; disk->domid = domid; - disk->physpath = NULL; - disk->phystype = 0; + disk->physpath = strdup(""); + disk->phystype = PHYSTYPE_EMPTY; /* this value is returned to the user: do not free right away */ disk->virtpath = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/dev", backend)); disk->unpluggable = 1; @@ -882,6 +882,8 @@ int libxl_device_disk_add(libxl_ctx *ctx device.backend_kind = DEVICE_VBD; break; } + case PHYSTYPE_EMPTY: + break; case PHYSTYPE_FILE: /* let's pretend is tap:aio for the moment */ disk->phystype = PHYSTYPE_AIO; @@ -1606,7 +1608,7 @@ static unsigned int libxl_append_disk_li pdisk->backend_domid = 0; pdisk->domid = domid; physpath_tmp = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/params", be_path, *dir), &len); - if (strchr(physpath_tmp, ':')) { + if (physpath_tmp && strchr(physpath_tmp, ':')) { pdisk->physpath = strdup(strchr(physpath_tmp, ':') + 1); free(physpath_tmp); } else { @@ -1684,7 +1686,7 @@ int libxl_cdrom_insert(libxl_ctx *ctx, u if (!disk->physpath) { disk->physpath = strdup(""); - disk->phystype = PHYSTYPE_PHY; + disk->phystype = PHYSTYPE_EMPTY; } disks = libxl_device_disk_list(ctx, domid, &num); for (i = 0; i < num; i++) { diff -r 787af706dadc -r 6ec61438713a tools/libxl/libxl.h --- a/tools/libxl/libxl.h Tue Jan 25 17:02:47 2011 +0000 +++ b/tools/libxl/libxl.h Tue Jan 25 18:06:53 2011 +0000 @@ -178,6 +178,7 @@ typedef enum { PHYSTYPE_AIO, PHYSTYPE_FILE, PHYSTYPE_PHY, + PHYSTYPE_EMPTY, } libxl_disk_phystype; typedef enum { diff -r 787af706dadc -r 6ec61438713a tools/libxl/libxl_device.c --- a/tools/libxl/libxl_device.c Tue Jan 25 17:02:47 2011 +0000 +++ b/tools/libxl/libxl_device.c Tue Jan 25 18:06:53 2011 +0000 @@ -130,6 +130,7 @@ char *libxl__device_disk_string_of_physt case PHYSTYPE_AIO: return "aio"; case PHYSTYPE_FILE: return "file"; case PHYSTYPE_PHY: return "phy"; + case PHYSTYPE_EMPTY: return "file"; default: return NULL; } } @@ -143,6 +144,7 @@ char *libxl__device_disk_backend_type_of case PHYSTYPE_AIO: return "tap"; /* let's pretend file is tap:aio */ case PHYSTYPE_FILE: return "tap"; + case PHYSTYPE_EMPTY: return "tap"; case PHYSTYPE_PHY: return "phy"; default: return NULL; } diff -r 787af706dadc -r 6ec61438713a tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Tue Jan 25 17:02:47 2011 +0000 +++ b/tools/libxl/xl_cmdimpl.c Tue Jan 25 18:06:53 2011 +0000 @@ -456,6 +456,11 @@ static int parse_disk_config(libxl_devic fprintf(stderr, "Unknown disk type: %s\n", tok); return 0; } + tok = p + 1; + } else if (*p == ',') { + state = DSTATE_VIRTPATH; + disk->phystype = PHYSTYPE_EMPTY; + disk->physpath = strdup(""); tok = p + 1; } break; @@ -1834,8 +1839,8 @@ static void cd_insert(const char *dom, c libxl_string_to_phystype(&ctx, phys, &disk.phystype); } } else { - disk.physpath = NULL; - disk.phystype = 0; + disk.physpath = strdup(""); + disk.phystype = PHYSTYPE_EMPTY; } disk.virtpath = (char*)virtdev; disk.unpluggable = 1; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |