[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ioemu: Re-enable guest boot with blktap devices ([Xen-devel] Weekly VMX status report. Xen: #18577 & Xen0: #696)



Li, Haicheng wrote:
Our testing was blocke by bug #1367; and totally 2 new issues were found this 
week,

New Bugs:
=====================================================================
1. [Qcow]Guest cannot boot up with Qcow image
http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1367

Bug #1367 looks caused by the xenstore path checking code recently added
to ioemu-remote. I saw the same problem and found that the code didn't
consider the case blktap devices were attached to the guest. The patch
below should avoid the problem.

Signed-off-by: Yosuke Iwamatsu <y-iwamatsu@xxxxxxxxxxxxx>

diff --git a/xenstore.c b/xenstore.c
index f5aa8a7..39ff8a6 100644
--- a/xenstore.c
+++ b/xenstore.c
@@ -158,6 +158,7 @@ static void xenstore_get_backend_path(char **backend, const char *devtype,
     char *frontend_path=0;
     char *backend_dompath=0;
     char *expected_backend=0;
+    char *expected_devtype=0;
     char *frontend_backend_path=0;
     char *backend_frontend_path=0;
     char *frontend_doublecheck=0;
@@ -191,11 +192,18 @@ static void xenstore_get_backend_path(char **backend, const char *devtype,
     backend_dompath = xs_get_domain_path(xsh, domid_backend);
     if (!backend_dompath) goto out;

+    if (pasprintf(&expected_devtype, "%s", devtype) == -1) goto out;
+
+ again:
     if (pasprintf(&expected_backend, "%s/backend/%s/%lu/%s",
-                  backend_dompath, devtype, frontend_domid, inst_danger)
+ backend_dompath, expected_devtype, frontend_domid, inst_danger)
         == -1) goto out;

     if (strcmp(bpath, expected_backend)) {
+        if (!strcmp(expected_devtype, "vbd")) {
+            pasprintf(&expected_devtype, "tap");
+            goto again;
+        }
         fprintf(stderr, "frontend `%s' expected backend `%s' got `%s',"
                 " ignoring\n", frontend_path, expected_backend, bpath);
         errno = EINVAL;
@@ -223,6 +231,7 @@ static void xenstore_get_backend_path(char **backend, const char *devtype,
     free(frontend_path);
     free(backend_dompath);
     free(expected_backend);
+    free(expected_devtype);
     free(frontend_backend_path);
     free(backend_frontend_path);
     free(frontend_doublecheck);

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.