File blktap.patch of Package xen

bug #239173
bug #242953

Index: xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
===================================================================
--- xen-4.6.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c
+++ xen-4.6.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c
@@ -447,9 +447,9 @@ void xenstore_parse_domain_config(int hv
 {
     char **e_danger = NULL;
     char *buf = NULL;
-    char *fpath = NULL, *bpath = NULL,
+    char *fpath = NULL, *bpath = NULL, *btype = NULL,
         *dev = NULL, *params = NULL, *drv = NULL;
-    int i, ret;
+    int i, ret, is_tap;
     unsigned int len, num, hd_index, pci_devid = 0;
     BlockDriverState *bs;
     BlockDriver *format;
@@ -486,6 +486,14 @@ void xenstore_parse_domain_config(int hv
 				  e_danger[i]);
         if (bpath == NULL)
             continue;    
+        /* check to see if type is tap or not */
+        if (pasprintf(&buf, "%s/type", bpath) == -1)
+            continue;
+        free(btype);
+        btype = xs_read(xsh, XBT_NULL, buf, &len);
+        if (btype == NULL)
+            continue;
+        is_tap = !strncmp(btype, "tap", 3);
         /* read the name of the device */
         if (pasprintf(&buf, "%s/dev", bpath) == -1)
             continue;
@@ -760,6 +768,7 @@ void xenstore_parse_domain_config(int hv
     free(mode);
     free(params);
     free(dev);
+    free(btype);
     free(bpath);
     free(buf);
     free(danger_buf);
openSUSE Build Service is sponsored by