Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.1:Update
xen
xen-qemu-iscsi-fix.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xen-qemu-iscsi-fix.patch of Package xen
Index: xen-3.3.1-testing/tools/ioemu-remote/xenstore.c =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/xenstore.c +++ xen-3.3.1-testing/tools/ioemu-remote/xenstore.c @@ -153,7 +153,7 @@ void xenstore_parse_domain_config(int hv char *buf = NULL, *path; char *fpath = NULL, *bpath = NULL, *btype = NULL, *dev = NULL, *params = NULL, *type = NULL, *drv = NULL; - int i, any_hdN = 0, ret, is_tap; + int i, j, any_hdN = 0, ret, is_tap; unsigned int len, num, hd_index, pci_devid = 0; BlockDriverState *bs; BlockDriver *format; @@ -238,12 +238,7 @@ void xenstore_parse_domain_config(int hv 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; @@ -251,6 +246,34 @@ void xenstore_parse_domain_config(int hv drv = xs_read(xsh, XBT_NULL, buf, &len); if (drv == NULL) continue; + + free(params); + if (!strcmp(drv,"iscsi") || !strcmp(drv, "npiv") || + !strcmp(drv,"dmmd")) { + if (pasprintf(&buf, "%s/node", bpath) == -1) + continue; + + /* wait for block-[iscsi|npiv|dmmd] 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: %s device not found -- timed out\n", drv); + continue; + } + } + else { + if (pasprintf(&buf, "%s/params", bpath) == -1) + continue; + params = xs_read(xsh, XBT_NULL, buf, &len); + if (params == NULL) + continue; + } + /* Obtain blktap sub-type prefix */ if (!strcmp(drv, "tap") && params[0]) { char *offset = strchr(params, ':'); @@ -329,6 +352,10 @@ void xenstore_parse_domain_config(int hv format = &bdrv_raw; } else if (!strcmp(drv,"phy")) { format = &bdrv_raw; + } else if (!strcmp(drv,"iscsi")) { + format = &bdrv_raw; + } else if (!strcmp(drv,"npiv")) { + format = &bdrv_raw; } else { format = bdrv_find_format(drv); if (!format) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor