Expose disk and nic device destroy calls, to allow
hot unplugging of devices from domains.
Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
# HG changeset patch
# User Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
# Date 1259038343 18000
# Node ID 4c8563c26642159a6bd7bbb356826c0e7e96534f
# Parent 67d997a4d4c87d739b4d29b301a4ba727563ca9e
Expose disk and nic device destroy calls, to allow
hot unplugging of devices from domains.
Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
diff -r 67d997a4d4c8 -r 4c8563c26642 libxl.c
--- a/libxl.c
+++ b/libxl.c
@@ -934,6 +934,23 @@ int libxl_device_disk_add(struct libxl_c
return 0;
}
+int libxl_device_disk_del(struct libxl_ctx *ctx,
+ libxl_device_disk *disk, int wait)
+{
+ libxl_device device;
+ int devid;
+
+ devid = device_disk_dev_number(disk->virtpath);
+ device.backend_domid = disk->backend_domid;
+ device.backend_devid = devid;
+ device.backend_kind =
+ (disk->phystype == PHYSTYPE_PHY) ? DEVICE_VBD : DEVICE_TAP;
+ device.domid = disk->domid;
+ device.devid = devid;
+ device.kind = DEVICE_VBD;
+ return libxl_device_del(ctx, &device, wait);
+}
+
int libxl_device_disk_clean_shutdown(struct libxl_ctx *ctx, uint32_t domid)
{
return ERROR_NI;
@@ -1007,6 +1024,21 @@ int libxl_device_nic_add(struct libxl_ct
return 0;
}
+int libxl_device_nic_del(struct libxl_ctx *ctx,
+ libxl_device_nic *nic, int wait)
+{
+ libxl_device device;
+
+ device.backend_devid = nic->devid;
+ device.backend_domid = nic->backend_domid;
+ device.backend_kind = DEVICE_VIF;
+ device.devid = nic->devid;
+ device.domid = nic->domid;
+ device.kind = DEVICE_VIF;
+
+ return libxl_device_del(ctx, &device, wait);
+}
+
int libxl_device_nic_clean_shutdown(struct libxl_ctx *ctx, uint32_t domid)
{
return ERROR_NI;
diff -r 67d997a4d4c8 -r 4c8563c26642 libxl.h
--- a/libxl.h
+++ b/libxl.h
@@ -288,10 +288,12 @@ int libxl_detach_device_model(struct lib
/* DM is detached even if error is returned */
int libxl_device_disk_add(struct libxl_ctx *ctx, uint32_t domid,
libxl_device_disk *disk);
+int libxl_device_disk_del(struct libxl_ctx *ctx, libxl_device_disk *disk, int
wait);
int libxl_device_disk_clean_shutdown(struct libxl_ctx *ctx, uint32_t domid);
int libxl_device_disk_hard_shutdown(struct libxl_ctx *ctx, uint32_t domid);
int libxl_device_nic_add(struct libxl_ctx *ctx, uint32_t domid,
libxl_device_nic *nic);
+int libxl_device_nic_del(struct libxl_ctx *ctx, libxl_device_nic *nic, int
wait);
int libxl_device_nic_clean_shutdown(struct libxl_ctx *ctx, uint32_t domid);
int libxl_device_nic_hard_shutdown(struct libxl_ctx *ctx, uint32_t domid);
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|