This commit is contained in:
committed by
Git OBS Bridge
parent
614a20ee4e
commit
750b94deb2
62
xen-qemu-iscsi-fix.patch
Normal file
62
xen-qemu-iscsi-fix.patch
Normal file
@@ -0,0 +1,62 @@
|
||||
Index: xen-3.2.1-testing/tools/ioemu/xenstore.c
|
||||
===================================================================
|
||||
--- xen-3.2.1-testing.orig/tools/ioemu/xenstore.c
|
||||
+++ xen-3.2.1-testing/tools/ioemu/xenstore.c
|
||||
@@ -91,6 +91,7 @@ void xenstore_parse_domain_config(int do
|
||||
char *fpath = NULL, *bpath = NULL, *btype = NULL,
|
||||
*dev = NULL, *params = NULL, *type = NULL, *drv = NULL;
|
||||
int i, is_scsi, is_tap, is_hdN = 0;
|
||||
+ int j;
|
||||
unsigned int len, num, hd_index;
|
||||
BlockDriverState *bs;
|
||||
|
||||
@@ -173,12 +174,7 @@ void xenstore_parse_domain_config(int do
|
||||
continue;
|
||||
free(type);
|
||||
type = xs_read(xsh, XBT_NULL, buf, &len);
|
||||
- if (pasprintf(&buf, "%s/params", bpath) == -1)
|
||||
- continue;
|
||||
- free(params);
|
||||
- params = xs_read(xsh, XBT_NULL, buf, &len);
|
||||
- if (params == NULL)
|
||||
- continue;
|
||||
+
|
||||
/* read the name of the device */
|
||||
if (pasprintf(&buf, "%s/type", bpath) == -1)
|
||||
continue;
|
||||
@@ -186,6 +182,35 @@ void xenstore_parse_domain_config(int do
|
||||
drv = xs_read(xsh, XBT_NULL, buf, &len);
|
||||
if (drv == NULL)
|
||||
continue;
|
||||
+
|
||||
+ free(params);
|
||||
+ if (!strcmp(drv,"iscsi"))
|
||||
+ {
|
||||
+ if (pasprintf(&buf, "%s/node", bpath) == -1)
|
||||
+ continue;
|
||||
+
|
||||
+ /* wait for block-iscsi script to complete and populate the
|
||||
+ * node entry. try 30 times (30 secs) */
|
||||
+ for (j = 0; j < 30; j++) {
|
||||
+ params = xs_read(xsh, XBT_NULL, buf, &len);
|
||||
+ if (params != NULL)
|
||||
+ break;
|
||||
+ sleep(1);
|
||||
+ }
|
||||
+ if (params == NULL) {
|
||||
+ fprintf(stderr, "qemu: iscsi device not found -- timed out \n");
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (pasprintf(&buf, "%s/params", bpath) == -1)
|
||||
+ continue;
|
||||
+ params = xs_read(xsh, XBT_NULL, buf, &len);
|
||||
+ if (params == NULL)
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
/* Strip off blktap sub-type prefix aio: - QEMU can autodetect this */
|
||||
if (!strcmp(drv, "tap") && params[0]) {
|
||||
char *offset = strchr(params, ':');
|
Reference in New Issue
Block a user