2010/8/23 <soren(a)linux2go.dk>:
From: Soren Hansen <soren(a)linux2go.dk>
UML supports hot plugging and unplugging of various devices. This patch
exposes this functionality for disks.
Signed-off-by: Soren Hansen <soren(a)linux2go.dk>
---
src/uml/uml_driver.c | 239 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 235 insertions(+), 4 deletions(-)
diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
index 9cad7f1..a5c5d6a 100644
--- a/src/uml/uml_driver.c
+++ b/src/uml/uml_driver.c
@@ -1683,6 +1683,237 @@ cleanup:
}
+static int umlDomainAttachUmlDisk(struct uml_driver *driver,
+ virDomainObjPtr vm,
+ virDomainDiskDefPtr disk)
+{
+ int i, ret;
+ char *cmd = NULL;
+ char *reply = NULL;
+
+ for (i = 0 ; i < vm->def->ndisks ; i++) {
+ if (STREQ(vm->def->disks[i]->dst, disk->dst)) {
+ umlReportError(VIR_ERR_OPERATION_FAILED,
+ _("target %s already exists"), disk->dst);
+ return -1;
+ }
+ }
+
+ if (!disk->src) {
+ umlReportError(VIR_ERR_INTERNAL_ERROR,
+ "%s", _("disk source path is missing"));
+ goto error;
+ }
+
+ if (virAsprintf(&cmd, "config %s=%s", disk->dst, disk->src) <
0) {
+ virReportOOMError();
+ return -1;
+ }
+
+ if (umlMonitorCommand(driver, vm, cmd, &reply) < 0)
+ goto error;
+
+ if (VIR_REALLOC_N(vm->def->disks, vm->def->ndisks+1) < 0) {
+ virReportOOMError();
+ goto error;
+ }
+
+ if (ret < 0)
+ goto error;
I was about to push this patch, but compile testing gave this error:
uml/uml_driver.c: In function 'umlDomainAttachUmlDisk':
uml/uml_driver.c:1729: error: 'ret' may be used uninitialized in this
function [-Wuninitialized]
I think "if (ret < 0) goto error;" and "int ret;" can just be
removed
completely from this function, but I would like have your ACK on this
before doing so.
Matthias