]> Git Repo - qemu.git/blobdiff - hw/xen_backend.c
virtio-blk-s390: switch to the new API.
[qemu.git] / hw / xen_backend.c
index 2673ace185f2ab95e6371705957a0c26adbad716..24381b55e58575644aba56feb0e3159638136fff 100644 (file)
 #include <sys/mman.h>
 #include <sys/signal.h>
 
-#include <xs.h>
-#include <xenctrl.h>
-#include <xen/grant_table.h>
+#include "hw/hw.h"
+#include "char/char.h"
+#include "qemu/log.h"
+#include "hw/xen_backend.h"
 
-#include "hw.h"
-#include "qemu-char.h"
-#include "qemu-log.h"
-#include "xen_backend.h"
+#include <xen/grant_table.h>
 
 /* ------------------------------------------------------------- */
 
@@ -592,7 +590,7 @@ static void xenstore_update_be(char *watch, char *type, int dom,
                                struct XenDevOps *ops)
 {
     struct XenDevice *xendev;
-    char path[XEN_BUFSIZE], *dom0;
+    char path[XEN_BUFSIZE], *dom0, *bepath;
     unsigned int len, dev;
 
     dom0 = xs_get_domain_path(xenstore, 0);
@@ -611,15 +609,16 @@ static void xenstore_update_be(char *watch, char *type, int dom,
         return;
     }
 
-    if (0) {
-        /* FIXME: detect devices being deleted from xenstore ... */
-        xen_be_del_xendev(dom, dev);
-    }
-
     xendev = xen_be_get_xendev(type, dom, dev, ops);
     if (xendev != NULL) {
-        xen_be_backend_changed(xendev, path);
-        xen_be_check_state(xendev);
+        bepath = xs_read(xenstore, 0, xendev->be, &len);
+        if (bepath == NULL) {
+            xen_be_del_xendev(dom, dev);
+        } else {
+            free(bepath);
+            xen_be_backend_changed(xendev, path);
+            xen_be_check_state(xendev);
+        }
     }
 }
 
This page took 0.02503 seconds and 4 git commands to generate.