[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 1/3] qemu-trad: xenstore: use relative path for device-model node
For QEMU traditional running in Dom0, there is no functional change because it will still write to the same /local/domain/0 path. For QEMU traditional stubdom, this is an incompatible startup protocol change. There is a corresponding libxl changeset "libxl: use new QEMU xenstore protocol", which has not yet been committed (54c2e621 was reverted in 84066dd4). QEMU traditional stubdom was broken by a0731cca "ioreq-server: on-demand creation of ioreq server" in 4.5. Currently there is a workaround in -unstable dd748d12 "x86/hvm: wait for at least one ioreq server to be enabled" (which should be backported to 4.5). QEMU traditional stubdom works with that workaround in -unstable but it's not ideal situation. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> --- Note: In order to not cause a regression in -unstable, this change and libxl side change need to be committed at the same time. And libxl side patch needs to contain a updated tag that points to this commit. --- xenstore.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/xenstore.c b/xenstore.c index b0d6f77..8af2715 100644 --- a/xenstore.c +++ b/xenstore.c @@ -711,15 +711,13 @@ void xenstore_parse_domain_config(int hvm_domid) /* Set a watch for log-dirty commands from the migration tools */ - if (pasprintf(&buf, "/local/domain/0/device-model/%u/logdirty/cmd", - domid) != -1) { + if (pasprintf(&buf, "device-model/%u/logdirty/cmd", domid) != -1) { xs_watch(xsh, buf, "logdirty"); fprintf(logfile, "Watching %s\n", buf); } /* Set a watch for suspend requests from the migration tools */ - if (pasprintf(&buf, - "/local/domain/0/device-model/%u/command", domid) != -1) { + if (pasprintf(&buf, "device-model/%u/command", domid) != -1) { xs_watch(xsh, buf, "dm-command"); fprintf(logfile, "Watching %s\n", buf); } @@ -777,7 +775,7 @@ int xenstore_parse_disable_pf_config () int disable_pf = 0; unsigned int len; - if (pasprintf(&buf, "/local/domain/0/device-model/%u/disable_pf",domid) == -1) + if (pasprintf(&buf, "device-model/%u/disable_pf",domid) == -1) goto out; params = xs_read(xsh, XBT_NULL, buf, &len); @@ -807,15 +805,11 @@ static void xenstore_process_logdirty_event(void) unsigned int len; /* Remember the paths for the command and response entries */ - if (pasprintf(&ret_path, - "/local/domain/0/device-model/%u/logdirty/ret", - domid) == -1) { + if (pasprintf(&ret_path, "device-model/%u/logdirty/ret", domid) == -1) { fprintf(logfile, "Log-dirty: out of memory\n"); exit(1); } - if (pasprintf(&cmd_path, - "/local/domain/0/device-model/%u/logdirty/cmd", - domid) == -1) { + if (pasprintf(&cmd_path, "device-model/%u/logdirty/cmd", domid) == -1) { fprintf(logfile, "Log-dirty: out of memory\n"); exit(1); } @@ -854,8 +848,7 @@ static void xenstore_process_dm_command_event(void) char *path = NULL, *command = NULL, *par = NULL; unsigned int len; - if (pasprintf(&path, - "/local/domain/0/device-model/%u/command", domid) == -1) { + if (pasprintf(&path, "device-model/%u/command", domid) == -1) { fprintf(logfile, "out of memory reading dm command\n"); goto out; } @@ -874,8 +867,7 @@ static void xenstore_process_dm_command_event(void) xen_pause_requested = 0; } else if (!strncmp(command, "usb-add", len)) { fprintf(logfile, "dm-command: usb-add a usb device\n"); - if (pasprintf(&path, - "/local/domain/0/device-model/%u/parameter", domid) == -1) { + if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) { fprintf(logfile, "out of memory reading dm command parameter\n"); goto out; } @@ -888,8 +880,7 @@ static void xenstore_process_dm_command_event(void) fprintf(logfile, "dm-command: finish usb-add a usb device:%s\n",par); } else if (!strncmp(command, "usb-del", len)) { fprintf(logfile, "dm-command: usb-del a usb device\n"); - if (pasprintf(&path, - "/local/domain/0/device-model/%u/parameter", domid) == -1) { + if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) { fprintf(logfile, "out of memory reading dm command parameter\n"); goto out; } @@ -904,8 +895,7 @@ static void xenstore_process_dm_command_event(void) } else if (!strncmp(command, "pci-rem", len)) { fprintf(logfile, "dm-command: hot remove pass-through pci dev \n"); - if (pasprintf(&path, - "/local/domain/0/device-model/%u/parameter", domid) == -1) { + if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) { fprintf(logfile, "out of memory reading dm command parameter\n"); goto out; } @@ -918,8 +908,7 @@ static void xenstore_process_dm_command_event(void) } else if (!strncmp(command, "pci-ins", len)) { fprintf(logfile, "dm-command: hot insert pass-through pci dev \n"); - if (pasprintf(&path, - "/local/domain/0/device-model/%u/parameter", domid) == -1) { + if (pasprintf(&path, "device-model/%u/parameter", domid) == -1) { fprintf(logfile, "out of memory reading dm command parameter\n"); goto out; } @@ -943,8 +932,7 @@ void xenstore_record_dm(const char *subpath, const char *state) { char *path = NULL; - if (pasprintf(&path, - "/local/domain/0/device-model/%u/%s", domid, subpath) == -1) { + if (pasprintf(&path, "device-model/%u/%s", domid, subpath) == -1) { fprintf(logfile, "out of memory recording dm \n"); goto out; } @@ -1521,7 +1509,7 @@ char *xenstore_device_model_read(int domid, const char *key, unsigned int *len) { char *path = NULL, *value = NULL; - if (pasprintf(&path, "/local/domain/0/device-model/%d/%s", domid, key) == -1) + if (pasprintf(&path, "device-model/%d/%s", domid, key) == -1) return NULL; value = xs_read(xsh, XBT_NULL, path, len); -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |