xen: Expect xenstore write to fail when restricted
authorRoss Lagerwall <ross.lagerwall@citrix.com>
Mon, 5 Mar 2018 10:07:46 +0000 (10:07 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 26 Apr 2018 15:29:51 +0000 (16:29 +0100)
Saving the current state to xenstore may fail when running restricted
(in particular, after a migration). Therefore, don't report the error or
exit when running restricted.  Toolstacks that want to allow running
QEMU restricted should instead make use of QMP events to listen for
state changes.

CC: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Anthony PERARD <anthony.perard@citrix.com>
hw/xen/xen-common.c

index 454777c5870f0f76be4a47a09d36c3daffc021aa..6ec14c73ca5edcd4b2342231982f52e7aae3ab01 100644 (file)
@@ -101,7 +101,12 @@ static void xenstore_record_dm_state(struct xs_handle *xs, const char *state)
     }
 
     snprintf(path, sizeof (path), "device-model/%u/state", xen_domid);
-    if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
+    /*
+     * This call may fail when running restricted so don't make it fatal in
+     * that case. Toolstacks should instead use QMP to listen for state changes.
+     */
+    if (!xs_write(xs, XBT_NULL, path, state, strlen(state)) &&
+            !xen_domid_restrict) {
         error_report("error recording dm state");
         exit(1);
     }