* [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() @ 2015-12-01 13:55 Paul Durrant 2015-12-01 13:55 ` [PATCH v1 1/2] libxl: re-name " Paul Durrant 2015-12-01 13:55 ` [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() Paul Durrant 0 siblings, 2 replies; 11+ messages in thread From: Paul Durrant @ 2015-12-01 13:55 UTC (permalink / raw) To: xen-devel; +Cc: Paul Durrant This is a re-post as I'd forgottent to add Cc-s for maintainers on patch #1 Patch #1 is purely a search and replace Patch #2 changes the underlying implementation ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v1 1/2] libxl: re-name libxl__xs_write() to libxl__xs_printf()... 2015-12-01 13:55 [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() Paul Durrant @ 2015-12-01 13:55 ` Paul Durrant 2015-12-01 13:55 ` [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() Paul Durrant 1 sibling, 0 replies; 11+ messages in thread From: Paul Durrant @ 2015-12-01 13:55 UTC (permalink / raw) To: xen-devel; +Cc: Paul Durrant, Wei Liu, Ian Campbell, Stefano Stabellini ...to denote what it actually does. The name libxl__xs_write() suggests something taking a buffer and length, akin to write(2), whereas the semantics of the function are actually more akin to printf(3). This patch is a textual substitution of libxl__xs_write with libxl__xs_printf with some associated formatting fixes. Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: Ian Campbell <ian.campbell@citrix.com> Cc: Wei Liu <wei.liu2@citrix.com> --- tools/libxl/libxl.c | 47 +++++++++++++++++++++--------------------- tools/libxl/libxl_bootloader.c | 4 ++-- tools/libxl/libxl_create.c | 4 ++-- tools/libxl/libxl_dm.c | 36 ++++++++++++++++---------------- tools/libxl/libxl_dom.c | 23 +++++++++++---------- tools/libxl/libxl_exec.c | 2 +- tools/libxl/libxl_genid.c | 6 +++--- tools/libxl/libxl_internal.h | 4 ++-- tools/libxl/libxl_pci.c | 22 ++++++++++---------- tools/libxl/libxl_qmp.c | 4 ++-- tools/libxl/libxl_xshelp.c | 4 ++-- 11 files changed, 79 insertions(+), 77 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index bd3aac8..bd604ac 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1136,7 +1136,7 @@ int libxl__domain_pvcontrol_write(libxl__gc *gc, xs_transaction_t t, if (!shutdown_path) return ERROR_FAIL; - return libxl__xs_write(gc, t, shutdown_path, "%s", cmd); + return libxl__xs_printf(gc, t, shutdown_path, "%s", cmd); } static int libxl__domain_pvcontrol(libxl__gc *gc, uint32_t domid, @@ -1364,7 +1364,7 @@ static void disk_eject_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, if (!value || strcmp(value, "eject")) return; - if (libxl__xs_write(gc, XBT_NULL, wpath, "")) { + if (libxl__xs_printf(gc, XBT_NULL, wpath, "")) { LIBXL__EVENT_DISASTER(egc, "xs_write failed acknowledging eject", errno, LIBXL_EVENT_TYPE_DISK_EJECT); return; @@ -4696,13 +4696,13 @@ retry_transaction: goto out; if (target == NULL) { - libxl__xs_write(gc, t, target_path, "%"PRIu32, - (uint32_t) info.current_memkb); + libxl__xs_printf(gc, t, target_path, "%"PRIu32, + (uint32_t) info.current_memkb); *target_memkb = (uint32_t) info.current_memkb; } if (staticmax == NULL) { - libxl__xs_write(gc, t, max_path, "%"PRIu32, - (uint32_t) info.max_memkb); + libxl__xs_printf(gc, t, max_path, "%"PRIu32, + (uint32_t) info.max_memkb); *max_memkb = (uint32_t) info.max_memkb; } @@ -4839,8 +4839,8 @@ retry_transaction: goto out; } - libxl__xs_write(gc, t, GCSPRINTF("%s/memory/target", - dompath), "%"PRIu32, new_target_memkb); + libxl__xs_printf(gc, t, GCSPRINTF("%s/memory/target", dompath), + "%"PRIu32, new_target_memkb); rc = xc_domain_getinfolist(ctx->xch, domid, 1, &info); if (rc != 1 || info.domain != domid) { abort_transaction = 1; @@ -4850,8 +4850,8 @@ retry_transaction: libxl_dominfo_init(&ptr); xcinfo2xlinfo(ctx, &info, &ptr); uuid = libxl__uuid2string(gc, ptr.uuid); - libxl__xs_write(gc, t, GCSPRINTF("/vm/%s/memory", uuid), - "%"PRIu32, new_target_memkb / 1024); + libxl__xs_printf(gc, t, GCSPRINTF("/vm/%s/memory", uuid), + "%"PRIu32, new_target_memkb / 1024); libxl_dominfo_dispose(&ptr); out: @@ -5486,9 +5486,9 @@ static int libxl__set_vcpuonline_xenstore(libxl__gc *gc, uint32_t domid, retry_transaction: t = xs_transaction_start(CTX->xsh); for (i = 0; i <= info->vcpu_max_id; i++) - libxl__xs_write(gc, t, - GCSPRINTF("%s/cpu/%u/availability", dompath, i), - "%s", libxl_bitmap_test(cpumap, i) ? "online" : "offline"); + libxl__xs_printf(gc, t, + GCSPRINTF("%s/cpu/%u/availability", dompath, i), + "%s", libxl_bitmap_test(cpumap, i) ? "online" : "offline"); if (!xs_transaction_end(CTX->xsh, t, 0)) { if (errno == EAGAIN) goto retry_transaction; @@ -5984,7 +5984,8 @@ int libxl_send_sysrq(libxl_ctx *ctx, uint32_t domid, char sysrq) GC_INIT(ctx); char *dompath = libxl__xs_get_dompath(gc, domid); - libxl__xs_write(gc, XBT_NULL, GCSPRINTF("%s/control/sysrq", dompath), "%c", sysrq); + libxl__xs_printf(gc, XBT_NULL, GCSPRINTF("%s/control/sysrq", dompath), + "%c", sysrq); GC_FREE; return 0; @@ -6262,12 +6263,12 @@ int libxl_cpupool_create(libxl_ctx *ctx, const char *name, t = xs_transaction_start(ctx->xsh); xs_mkdir(ctx->xsh, t, GCSPRINTF("/local/pool/%d", *poolid)); - libxl__xs_write(gc, t, - GCSPRINTF("/local/pool/%d/uuid", *poolid), - "%s", uuid_string); - libxl__xs_write(gc, t, - GCSPRINTF("/local/pool/%d/name", *poolid), - "%s", name); + libxl__xs_printf(gc, t, + GCSPRINTF("/local/pool/%d/uuid", *poolid), + "%s", uuid_string); + libxl__xs_printf(gc, t, + GCSPRINTF("/local/pool/%d/name", *poolid), + "%s", name); if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN)) { GC_FREE; @@ -6358,9 +6359,9 @@ int libxl_cpupool_rename(libxl_ctx *ctx, const char *name, uint32_t poolid) for (;;) { t = xs_transaction_start(ctx->xsh); - libxl__xs_write(gc, t, - GCSPRINTF("/local/pool/%d/name", poolid), - "%s", name); + libxl__xs_printf(gc, t, + GCSPRINTF("/local/pool/%d/name", poolid), + "%s", name); if (xs_transaction_end(ctx->xsh, t, 0)) break; diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c index 343fc30..0ae074a 100644 --- a/tools/libxl/libxl_bootloader.c +++ b/tools/libxl/libxl_bootloader.c @@ -485,8 +485,8 @@ static void bootloader_gotptys(libxl__egc *egc, libxl__openpty_state *op) dom_console_xs_path = GCSPRINTF("%s/console/tty", dompath); - rc = libxl__xs_write(gc, XBT_NULL, dom_console_xs_path, "%s", - dom_console_slave_tty_path); + rc = libxl__xs_printf(gc, XBT_NULL, dom_console_xs_path, "%s", + dom_console_slave_tty_path); if (rc) { LOGE(ERROR,"xs write console path %s := %s failed", dom_console_xs_path, dom_console_slave_tty_path); diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 673e537..01ab831 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -678,8 +678,8 @@ static int store_libxl_entry(libxl__gc *gc, uint32_t domid, path = libxl__xs_libxl_path(gc, domid); path = GCSPRINTF("%s/dm-version", path); - return libxl__xs_write(gc, XBT_NULL, path, "%s", - libxl_device_model_version_to_string(b_info->device_model_version)); + return libxl__xs_printf(gc, XBT_NULL, path, "%s", + libxl_device_model_version_to_string(b_info->device_model_version)); } /*----- remus asynchronous checkpoint callback -----*/ diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index a4934df..2de0273 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -1535,14 +1535,14 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss) } libxl__write_stub_dmargs(gc, dm_domid, guest_domid, args); - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/image/device-model-domid", - libxl__xs_get_dompath(gc, guest_domid)), - "%d", dm_domid); - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/target", - libxl__xs_get_dompath(gc, dm_domid)), - "%d", guest_domid); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/image/device-model-domid", + libxl__xs_get_dompath(gc, guest_domid)), + "%d", dm_domid); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/target", + libxl__xs_get_dompath(gc, dm_domid)), + "%d", guest_domid); ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid); if (ret<0) { LOGE(ERROR, "setting target domain %d -> %d", dm_domid, guest_domid); @@ -1816,17 +1816,17 @@ void libxl__spawn_local_dm(libxl__egc *egc, libxl__dm_spawn_state *dmss) if (b_info->type == LIBXL_DOMAIN_TYPE_HVM) { path = xs_get_domain_path(ctx->xsh, domid); - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/hvmloader/bios", path), - "%s", libxl_bios_type_to_string(b_info->u.hvm.bios)); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/hvmloader/bios", path), + "%s", libxl_bios_type_to_string(b_info->u.hvm.bios)); /* Disable relocating memory to make the MMIO hole larger * unless we're running qemu-traditional and vNUMA is not * configured. */ - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/hvmloader/allow-memory-relocate", path), - "%d", - b_info->device_model_version==LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && - !libxl__vnuma_configured(b_info)); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/hvmloader/allow-memory-relocate", path), + "%d", + b_info->device_model_version==LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && + !libxl__vnuma_configured(b_info)); free(path); } @@ -1836,8 +1836,8 @@ void libxl__spawn_local_dm(libxl__egc *egc, libxl__dm_spawn_state *dmss) if (b_info->type == LIBXL_DOMAIN_TYPE_HVM && b_info->device_model_version == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL) - libxl__xs_write(gc, XBT_NULL, GCSPRINTF("%s/disable_pf", path), - "%d", !libxl_defbool_val(b_info->u.hvm.xen_platform_pci)); + libxl__xs_printf(gc, XBT_NULL, GCSPRINTF("%s/disable_pf", path), + "%d", !libxl_defbool_val(b_info->u.hvm.xen_platform_pci)); logfile_w = libxl__create_qemu_logfile(gc, GCSPRINTF("qemu-dm-%s", c_info->name)); diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 44d481b..517e838 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -825,15 +825,15 @@ static int hvm_build_set_xs_values(libxl__gc *gc, if (dom->smbios_module.guest_addr_out) { path = GCSPRINTF("/local/domain/%d/"HVM_XS_SMBIOS_PT_ADDRESS, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%"PRIx64, - dom->smbios_module.guest_addr_out); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%"PRIx64, + dom->smbios_module.guest_addr_out); if (ret) goto err; path = GCSPRINTF("/local/domain/%d/"HVM_XS_SMBIOS_PT_LENGTH, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%x", - dom->smbios_module.length); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%x", + dom->smbios_module.length); if (ret) goto err; } @@ -841,15 +841,15 @@ static int hvm_build_set_xs_values(libxl__gc *gc, if (dom->acpi_module.guest_addr_out) { path = GCSPRINTF("/local/domain/%d/"HVM_XS_ACPI_PT_ADDRESS, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%"PRIx64, - dom->acpi_module.guest_addr_out); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%"PRIx64, + dom->acpi_module.guest_addr_out); if (ret) goto err; path = GCSPRINTF("/local/domain/%d/"HVM_XS_ACPI_PT_LENGTH, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%x", - dom->acpi_module.length); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%x", + dom->acpi_module.length); if (ret) goto err; } @@ -1074,7 +1074,7 @@ int libxl__qemu_traditional_cmd(libxl__gc *gc, uint32_t domid, char *path = NULL; uint32_t dm_domid = libxl_get_stubdom_id(CTX, domid); path = libxl__device_model_xs_path(gc, dm_domid, domid, "/command"); - return libxl__xs_write(gc, XBT_NULL, path, "%s", cmd); + return libxl__xs_printf(gc, XBT_NULL, path, "%s", cmd); } /* @@ -1137,8 +1137,9 @@ int libxl__restore_emulator_xenstore_data(libxl__domain_create_state *dcs, goto out; } - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/%s", xs_root, key), "%s", val); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/%s", xs_root, key), + "%s", val); } rc = 0; diff --git a/tools/libxl/libxl_exec.c b/tools/libxl/libxl_exec.c index df4aead..02e6c91 100644 --- a/tools/libxl/libxl_exec.c +++ b/tools/libxl/libxl_exec.c @@ -144,7 +144,7 @@ int libxl__spawn_record_pid(libxl__gc *gc, libxl__spawn_state *spawn, pid_t pid) rc = libxl__ev_child_xenstore_reopen(gc, spawn->what); if (rc) goto out; - r = libxl__xs_write(gc, XBT_NULL, spawn->pidpath, "%d", pid); + r = libxl__xs_printf(gc, XBT_NULL, spawn->pidpath, "%d", pid); if (r) { LOGE(ERROR, "write %s = %d: xenstore write failed", spawn->pidpath, pid); diff --git a/tools/libxl/libxl_genid.c b/tools/libxl/libxl_genid.c index 4e2f013..f1c4eb7 100644 --- a/tools/libxl/libxl_genid.c +++ b/tools/libxl/libxl_genid.c @@ -77,9 +77,9 @@ int libxl__ms_vm_genid_set(libxl__gc *gc, uint32_t domid, rc = ERROR_FAIL; goto out; } - rc = libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/platform/generation-id", dom_path), - "%"PRIu64 ":%" PRIu64, genid[0], genid[1]); + rc = libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/platform/generation-id", dom_path), + "%"PRIu64 ":%" PRIu64, genid[0], genid[1]); if (rc < 0) goto out; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 1b99cd5..12b2b30 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -667,7 +667,7 @@ _hidden int libxl__xs_writev_perms(libxl__gc *gc, xs_transaction_t t, _hidden int libxl__xs_writev_atonce(libxl__gc *gc, const char *dir, char **kvs); -_hidden int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, +_hidden int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, const char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); /* Each fn returns 0 on success. * On error: returns -1, sets errno (no logging) */ @@ -702,7 +702,7 @@ int libxl__xs_read_checked(libxl__gc *gc, xs_transaction_t t, /* Does not include a trailing null. * May usefully be combined with GCSPRINTF if the format string - * behaviour of libxl__xs_write is desirable. */ + * behaviour of libxl__xs_printf is desirable. */ int libxl__xs_write_checked(libxl__gc *gc, xs_transaction_t t, const char *path, const char *string); diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c index 206b300..dc10cb7 100644 --- a/tools/libxl/libxl_pci.c +++ b/tools/libxl/libxl_pci.c @@ -254,7 +254,7 @@ retry_transaction2: xs_rm(ctx->xsh, t, GCSPRINTF("%s/vdev-%d", be_path, i)); xs_rm(ctx->xsh, t, GCSPRINTF("%s/opts-%d", be_path, i)); xs_rm(ctx->xsh, t, GCSPRINTF("%s/vdevfn-%d", be_path, i)); - libxl__xs_write(gc, t, num_devs_path, "%d", num - 1); + libxl__xs_printf(gc, t, num_devs_path, "%d", num - 1); for (j = i + 1; j < num; j++) { tmppath = GCSPRINTF("%s/state-%d", be_path, j); tmp = libxl__xs_read(gc, t, tmppath); @@ -733,7 +733,7 @@ static void pci_assignable_driver_path_write(libxl__gc *gc, pcidev->bus, pcidev->dev, pcidev->func); - if ( libxl__xs_write(gc, XBT_NULL, path, "%s", driver_path) < 0 ) { + if ( libxl__xs_printf(gc, XBT_NULL, path, "%s", driver_path) < 0 ) { LOGE(WARN, "Write of %s to node %s failed.", driver_path, path); } } @@ -971,14 +971,14 @@ static int qemu_pci_add_xenstore(libxl__gc *gc, uint32_t domid, state = libxl__xs_read(gc, XBT_NULL, path); path = libxl__device_model_xs_path(gc, dm_domid, domid, "/parameter"); if (pcidev->vdevfn) { - libxl__xs_write(gc, XBT_NULL, path, PCI_BDF_VDEVFN","PCI_OPTIONS, - pcidev->domain, pcidev->bus, pcidev->dev, - pcidev->func, pcidev->vdevfn, pcidev->msitranslate, - pcidev->power_mgmt); + libxl__xs_printf(gc, XBT_NULL, path, PCI_BDF_VDEVFN","PCI_OPTIONS, + pcidev->domain, pcidev->bus, pcidev->dev, + pcidev->func, pcidev->vdevfn, pcidev->msitranslate, + pcidev->power_mgmt); } else { - libxl__xs_write(gc, XBT_NULL, path, PCI_BDF","PCI_OPTIONS, - pcidev->domain, pcidev->bus, pcidev->dev, - pcidev->func, pcidev->msitranslate, pcidev->power_mgmt); + libxl__xs_printf(gc, XBT_NULL, path, PCI_BDF","PCI_OPTIONS, + pcidev->domain, pcidev->bus, pcidev->dev, + pcidev->func, pcidev->msitranslate, pcidev->power_mgmt); } libxl__qemu_traditional_cmd(gc, domid, "pci-ins"); @@ -1310,8 +1310,8 @@ static int qemu_pci_remove_xenstore(libxl__gc *gc, uint32_t domid, path = libxl__device_model_xs_path(gc, dm_domid, domid, "/state"); state = libxl__xs_read(gc, XBT_NULL, path); path = libxl__device_model_xs_path(gc, dm_domid, domid, "/parameter"); - libxl__xs_write(gc, XBT_NULL, path, PCI_BDF, pcidev->domain, - pcidev->bus, pcidev->dev, pcidev->func); + libxl__xs_printf(gc, XBT_NULL, path, PCI_BDF, pcidev->domain, + pcidev->bus, pcidev->dev, pcidev->func); /* Remove all functions at once atomically by only signalling * device-model for function 0 */ diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index f798de7..714038b 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -103,7 +103,7 @@ static int store_serial_port_info(libxl__qmp_handler *qmp, path = libxl__xs_get_dompath(gc, qmp->domid); path = GCSPRINTF("%s/serial/%d/tty", path, port); - ret = libxl__xs_write(gc, XBT_NULL, path, "%s", chardev + 4); + ret = libxl__xs_printf(gc, XBT_NULL, path, "%s", chardev + 4); GC_FREE; return ret; @@ -162,7 +162,7 @@ static int qmp_write_domain_console_item(libxl__gc *gc, int domid, path = libxl__xs_get_dompath(gc, domid); path = GCSPRINTF("%s/console/%s", path, item); - return libxl__xs_write(gc, XBT_NULL, path, "%s", value); + return libxl__xs_printf(gc, XBT_NULL, path, "%s", value); } static int qmp_register_vnc_callback(libxl__qmp_handler *qmp, diff --git a/tools/libxl/libxl_xshelp.c b/tools/libxl/libxl_xshelp.c index 46c6d6c..912a1f2 100644 --- a/tools/libxl/libxl_xshelp.c +++ b/tools/libxl/libxl_xshelp.c @@ -96,8 +96,8 @@ out: } -int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, - const char *path, const char *fmt, ...) +int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, + const char *path, const char *fmt, ...) { libxl_ctx *ctx = libxl__gc_owner(gc); char *s; -- 2.1.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-01 13:55 [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() Paul Durrant 2015-12-01 13:55 ` [PATCH v1 1/2] libxl: re-name " Paul Durrant @ 2015-12-01 13:55 ` Paul Durrant 2015-12-02 15:20 ` Ian Campbell 1 sibling, 1 reply; 11+ messages in thread From: Paul Durrant @ 2015-12-01 13:55 UTC (permalink / raw) To: xen-devel Cc: Wei Liu, Paul Durrant, Ian Jackson, Ian Campbell, Stefano Stabellini This patch adds a new libxl__xs_vprintf() which actually checks the success of the underlying call to xs_write() (logging if it fails) and then re-implements libxl__xs_printf() using this (and replacing the call to vasprintf() with a call to libxl__vsprintf()). libxl__xs_vprintf() is added to the 'checked' section of libxl_internal.h and, since it now underpins libxl__xs_printf(), that declaration is moved into the same section. Looking at call sites of libxl__xs_printf() it seems as though several of them expected a failure if the underlying xs_write() failed, so this patch should actually fulfil the semantic that was intended all along. Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Cc: Ian Jackson <ian.jackson@eu.citrix.com> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: Ian Campbell <ian.campbell@citrix.com> Cc: Wei Liu <wei.liu2@citrix.com> --- tools/libxl/libxl_internal.h | 8 +++++--- tools/libxl/libxl_xshelp.c | 32 ++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 12b2b30..e5000cf 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -666,9 +666,6 @@ _hidden int libxl__xs_writev_perms(libxl__gc *gc, xs_transaction_t t, /* _atonce creates a transaction and writes all keys at once */ _hidden int libxl__xs_writev_atonce(libxl__gc *gc, const char *dir, char **kvs); - -_hidden int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, - const char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); /* Each fn returns 0 on success. * On error: returns -1, sets errno (no logging) */ @@ -688,6 +685,11 @@ _hidden char *libxl__xs_libxl_path(libxl__gc *gc, uint32_t domid); * fails it logs and returns ERROR_FAIL. */ +int libxl__xs_vprintf(libxl__gc *gc, xs_transaction_t t, + const char *path, const char *fmt, va_list ap); +int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, + const char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); + /* On success, path will exist and will be empty */ int libxl__xs_mknod(libxl__gc *gc, xs_transaction_t t, const char *path, struct xs_permissions *perms, diff --git a/tools/libxl/libxl_xshelp.c b/tools/libxl/libxl_xshelp.c index 912a1f2..930b458 100644 --- a/tools/libxl/libxl_xshelp.c +++ b/tools/libxl/libxl_xshelp.c @@ -96,23 +96,35 @@ out: } -int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, - const char *path, const char *fmt, ...) +int libxl__xs_vprintf(libxl__gc *gc, xs_transaction_t t, + const char *path, const char *fmt, va_list ap) { libxl_ctx *ctx = libxl__gc_owner(gc); char *s; + bool ok; + + s = libxl__vsprintf(gc, fmt, ap); + + ok = xs_write(ctx->xsh, t, path, s, strlen(s)); + if (!ok) { + LOGE(ERROR, "xenstore write failed: `%s' = `%s'", path, s); + return ERROR_FAIL; + } + + return 0; +} + +int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, + const char *path, const char *fmt, ...) +{ va_list ap; - int ret; + int rc; + va_start(ap, fmt); - ret = vasprintf(&s, fmt, ap); + rc = libxl__xs_vprintf(gc, t, path, fmt, ap); va_end(ap); - if (ret == -1) { - return -1; - } - xs_write(ctx->xsh, t, path, s, ret); - free(s); - return 0; + return rc; } char * libxl__xs_read(libxl__gc *gc, xs_transaction_t t, const char *path) -- 2.1.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-01 13:55 ` [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() Paul Durrant @ 2015-12-02 15:20 ` Ian Campbell 2015-12-02 15:22 ` Paul Durrant 0 siblings, 1 reply; 11+ messages in thread From: Ian Campbell @ 2015-12-02 15:20 UTC (permalink / raw) To: Paul Durrant, xen-devel; +Cc: Wei Liu, Ian Jackson, Stefano Stabellini On Tue, 2015-12-01 at 13:55 +0000, Paul Durrant wrote: > This patch adds a new libxl__xs_vprintf() which actually checks the > success of the underlying call to xs_write() (logging if it fails) and > then re-implements libxl__xs_printf() using this (and replacing the > call to vasprintf() with a call to libxl__vsprintf()). Is the addition of libxl__xs_vprintf() an end in itself (i.e. do you have an upcoming use for it) or just an artefact of how you decided to fix libxl__xs_printf()? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-02 15:20 ` Ian Campbell @ 2015-12-02 15:22 ` Paul Durrant 2015-12-08 17:04 ` Ian Campbell 0 siblings, 1 reply; 11+ messages in thread From: Paul Durrant @ 2015-12-02 15:22 UTC (permalink / raw) To: Ian Campbell, xen-devel@lists.xenproject.org Cc: Ian Jackson, Stefano Stabellini, Wei Liu > -----Original Message----- > From: Ian Campbell [mailto:ian.campbell@citrix.com] > Sent: 02 December 2015 15:21 > To: Paul Durrant; xen-devel@lists.xenproject.org > Cc: Ian Jackson; Stefano Stabellini; Wei Liu > Subject: Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() > > On Tue, 2015-12-01 at 13:55 +0000, Paul Durrant wrote: > > This patch adds a new libxl__xs_vprintf() which actually checks the > > success of the underlying call to xs_write() (logging if it fails) and > > then re-implements libxl__xs_printf() using this (and replacing the > > call to vasprintf() with a call to libxl__vsprintf()). > > Is the addition of libxl__xs_vprintf() an end in itself (i.e. do you have > an upcoming use for it) or just an artefact of how you decided to fix > libxl__xs_printf()? > It's an artefact but seemed sufficiently useful to expose. Paul > Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-02 15:22 ` Paul Durrant @ 2015-12-08 17:04 ` Ian Campbell 2015-12-15 12:29 ` Ian Campbell 0 siblings, 1 reply; 11+ messages in thread From: Ian Campbell @ 2015-12-08 17:04 UTC (permalink / raw) To: Paul Durrant, xen-devel@lists.xenproject.org Cc: Ian Jackson, Stefano Stabellini, Wei Liu On Wed, 2015-12-02 at 15:22 +0000, Paul Durrant wrote: > > -----Original Message----- > > From: Ian Campbell [mailto:ian.campbell@citrix.com] > > Sent: 02 December 2015 15:21 > > To: Paul Durrant; xen-devel@lists.xenproject.org > > Cc: Ian Jackson; Stefano Stabellini; Wei Liu > > Subject: Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() > > > > On Tue, 2015-12-01 at 13:55 +0000, Paul Durrant wrote: > > > This patch adds a new libxl__xs_vprintf() which actually checks the > > > success of the underlying call to xs_write() (logging if it fails) > > > and > > > then re-implements libxl__xs_printf() using this (and replacing the > > > call to vasprintf() with a call to libxl__vsprintf()). > > > > Is the addition of libxl__xs_vprintf() an end in itself (i.e. do you > > have > > an upcoming use for it) or just an artefact of how you decided to fix > > libxl__xs_printf()? > > > > It's an artefact but seemed sufficiently useful to expose. Thanks: Acked-by: Ian Campbell <ian.campbell@citrix.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-08 17:04 ` Ian Campbell @ 2015-12-15 12:29 ` Ian Campbell 2015-12-15 12:30 ` Ian Campbell 0 siblings, 1 reply; 11+ messages in thread From: Ian Campbell @ 2015-12-15 12:29 UTC (permalink / raw) To: Paul Durrant, xen-devel@lists.xenproject.org Cc: Ian Jackson, Stefano Stabellini, Wei Liu On Tue, 2015-12-08 at 17:04 +0000, Ian Campbell wrote: > On Wed, 2015-12-02 at 15:22 +0000, Paul Durrant wrote: > > > -----Original Message----- > > > From: Ian Campbell [mailto:ian.campbell@citrix.com] > > > Sent: 02 December 2015 15:21 > > > To: Paul Durrant; xen-devel@lists.xenproject.org > > > Cc: Ian Jackson; Stefano Stabellini; Wei Liu > > > Subject: Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() > > > > > > On Tue, 2015-12-01 at 13:55 +0000, Paul Durrant wrote: > > > > This patch adds a new libxl__xs_vprintf() which actually checks the > > > > success of the underlying call to xs_write() (logging if it fails) > > > > and > > > > then re-implements libxl__xs_printf() using this (and replacing the > > > > call to vasprintf() with a call to libxl__vsprintf()). > > > > > > Is the addition of libxl__xs_vprintf() an end in itself (i.e. do you > > > have > > > an upcoming use for it) or just an artefact of how you decided to fix > > > libxl__xs_printf()? > > > > > > > It's an artefact but seemed sufficiently useful to expose. > > Thanks: > Acked-by: Ian Campbell <ian.campbell@citrix.com> And now applied, sorry for the delay. The comment on libxl__xs_mknod in the context was different but I resolved that, hopefully correctly! Did you have any other of these updates available? IIRC there were two series and both are now in, but there might be a third? _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-15 12:29 ` Ian Campbell @ 2015-12-15 12:30 ` Ian Campbell 2015-12-15 13:52 ` Paul Durrant 0 siblings, 1 reply; 11+ messages in thread From: Ian Campbell @ 2015-12-15 12:30 UTC (permalink / raw) To: Paul Durrant, xen-devel@lists.xenproject.org Cc: Ian Jackson, Stefano Stabellini, Wei Liu On Tue, 2015-12-15 at 12:29 +0000, Ian Campbell wrote: > On Tue, 2015-12-08 at 17:04 +0000, Ian Campbell wrote: > > On Wed, 2015-12-02 at 15:22 +0000, Paul Durrant wrote: > > > > -----Original Message----- > > > > From: Ian Campbell [mailto:ian.campbell@citrix.com] > > > > Sent: 02 December 2015 15:21 > > > > To: Paul Durrant; xen-devel@lists.xenproject.org > > > > Cc: Ian Jackson; Stefano Stabellini; Wei Liu > > > > Subject: Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() > > > > > > > > On Tue, 2015-12-01 at 13:55 +0000, Paul Durrant wrote: > > > > > This patch adds a new libxl__xs_vprintf() which actually checks > > > > > the > > > > > success of the underlying call to xs_write() (logging if it > > > > > fails) > > > > > and > > > > > then re-implements libxl__xs_printf() using this (and replacing > > > > > the > > > > > call to vasprintf() with a call to libxl__vsprintf()). > > > > > > > > Is the addition of libxl__xs_vprintf() an end in itself (i.e. do > > > > you > > > > have > > > > an upcoming use for it) or just an artefact of how you decided to > > > > fix > > > > libxl__xs_printf()? > > > > > > > > > > It's an artefact but seemed sufficiently useful to expose. > > > > Thanks: > > Acked-by: Ian Campbell <ian.campbell@citrix.com> > > And now applied, sorry for the delay. > > The comment on libxl__xs_mknod in the context was different but I > resolved > that, hopefully correctly! > > Did you have any other of these updates available? IIRC there were two > series and both are now in, but there might be a third? Specifically I have "[PATCH v2 0/3] libxl: xenstore related cleanup" and a precursor, but I think all of that has subsequently ended up as the two other series which already got applied, is that right? _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-15 12:30 ` Ian Campbell @ 2015-12-15 13:52 ` Paul Durrant 2015-12-15 15:13 ` Ian Campbell 0 siblings, 1 reply; 11+ messages in thread From: Paul Durrant @ 2015-12-15 13:52 UTC (permalink / raw) To: Ian Campbell, xen-devel@lists.xenproject.org Cc: Ian Jackson, Stefano Stabellini, Wei Liu > -----Original Message----- > From: Ian Campbell [mailto:ian.campbell@citrix.com] > Sent: 15 December 2015 12:31 > To: Paul Durrant; xen-devel@lists.xenproject.org > Cc: Ian Jackson; Stefano Stabellini; Wei Liu > Subject: Re: [Xen-devel] [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() > > On Tue, 2015-12-15 at 12:29 +0000, Ian Campbell wrote: > > On Tue, 2015-12-08 at 17:04 +0000, Ian Campbell wrote: > > > On Wed, 2015-12-02 at 15:22 +0000, Paul Durrant wrote: > > > > > -----Original Message----- > > > > > From: Ian Campbell [mailto:ian.campbell@citrix.com] > > > > > Sent: 02 December 2015 15:21 > > > > > To: Paul Durrant; xen-devel@lists.xenproject.org > > > > > Cc: Ian Jackson; Stefano Stabellini; Wei Liu > > > > > Subject: Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() > > > > > > > > > > On Tue, 2015-12-01 at 13:55 +0000, Paul Durrant wrote: > > > > > > This patch adds a new libxl__xs_vprintf() which actually checks > > > > > > the > > > > > > success of the underlying call to xs_write() (logging if it > > > > > > fails) > > > > > > and > > > > > > then re-implements libxl__xs_printf() using this (and replacing > > > > > > the > > > > > > call to vasprintf() with a call to libxl__vsprintf()). > > > > > > > > > > Is the addition of libxl__xs_vprintf() an end in itself (i.e. do > > > > > you > > > > > have > > > > > an upcoming use for it) or just an artefact of how you decided to > > > > > fix > > > > > libxl__xs_printf()? > > > > > > > > > > > > > It's an artefact but seemed sufficiently useful to expose. > > > > > > Thanks: > > > Acked-by: Ian Campbell <ian.campbell@citrix.com> > > > > And now applied, sorry for the delay. > > > > The comment on libxl__xs_mknod in the context was different but I > > resolved > > that, hopefully correctly! > > > > Did you have any other of these updates available? IIRC there were two > > series and both are now in, but there might be a third? > > Specifically I have "[PATCH v2 0/3] libxl: xenstore related cleanup" and a > precursor, but I think all of that has subsequently ended up as the two > other series which already got applied, is that right? That's right. The 'xenstore related cleanup' series was superseded by the others. Paul _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() 2015-12-15 13:52 ` Paul Durrant @ 2015-12-15 15:13 ` Ian Campbell 0 siblings, 0 replies; 11+ messages in thread From: Ian Campbell @ 2015-12-15 15:13 UTC (permalink / raw) To: Paul Durrant, xen-devel@lists.xenproject.org Cc: Ian Jackson, Stefano Stabellini, Wei Liu On Tue, 2015-12-15 at 13:52 +0000, Paul Durrant wrote: > > Specifically I have "[PATCH v2 0/3] libxl: xenstore related cleanup" and a > > precursor, but I think all of that has subsequently ended up as the two > > other series which already got applied, is that right? > > That's right. The 'xenstore related cleanup' series was superseded by the > others. Thanks, that's another raft of mails cleaned out of my queue folder ;-) Ian. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() @ 2015-11-25 15:28 Paul Durrant 2015-11-25 15:28 ` [PATCH v1 1/2] libxl: re-name " Paul Durrant 0 siblings, 1 reply; 11+ messages in thread From: Paul Durrant @ 2015-11-25 15:28 UTC (permalink / raw) To: xen-devel; +Cc: Paul Durrant Patch #1 is purely a search and replace Patch #2 changes the underlying implementation ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v1 1/2] libxl: re-name libxl__xs_write() to libxl__xs_printf()... 2015-11-25 15:28 [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() Paul Durrant @ 2015-11-25 15:28 ` Paul Durrant 0 siblings, 0 replies; 11+ messages in thread From: Paul Durrant @ 2015-11-25 15:28 UTC (permalink / raw) To: xen-devel; +Cc: Paul Durrant, Wei Liu, Ian Campbell, Stefano Stabellini ...to denote what it actually does. The name libxl__xs_write() suggests something taking a buffer and length, akin to write(2), whereas the semantics of the function are actually more akin to printf(3). This patch is a textual substitution of libxl__xs_write with libxl__xs_printf with some associated formatting fixes. Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: Ian Campbell <ian.campbell@citrix.com> Cc: Wei Liu <wei.liu2@citrix.com> --- tools/libxl/libxl.c | 47 +++++++++++++++++++++--------------------- tools/libxl/libxl_bootloader.c | 4 ++-- tools/libxl/libxl_create.c | 4 ++-- tools/libxl/libxl_dm.c | 36 ++++++++++++++++---------------- tools/libxl/libxl_dom.c | 23 +++++++++++---------- tools/libxl/libxl_exec.c | 2 +- tools/libxl/libxl_genid.c | 6 +++--- tools/libxl/libxl_internal.h | 4 ++-- tools/libxl/libxl_pci.c | 22 ++++++++++---------- tools/libxl/libxl_qmp.c | 4 ++-- tools/libxl/libxl_xshelp.c | 4 ++-- 11 files changed, 79 insertions(+), 77 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index bd3aac8..bd604ac 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1136,7 +1136,7 @@ int libxl__domain_pvcontrol_write(libxl__gc *gc, xs_transaction_t t, if (!shutdown_path) return ERROR_FAIL; - return libxl__xs_write(gc, t, shutdown_path, "%s", cmd); + return libxl__xs_printf(gc, t, shutdown_path, "%s", cmd); } static int libxl__domain_pvcontrol(libxl__gc *gc, uint32_t domid, @@ -1364,7 +1364,7 @@ static void disk_eject_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, if (!value || strcmp(value, "eject")) return; - if (libxl__xs_write(gc, XBT_NULL, wpath, "")) { + if (libxl__xs_printf(gc, XBT_NULL, wpath, "")) { LIBXL__EVENT_DISASTER(egc, "xs_write failed acknowledging eject", errno, LIBXL_EVENT_TYPE_DISK_EJECT); return; @@ -4696,13 +4696,13 @@ retry_transaction: goto out; if (target == NULL) { - libxl__xs_write(gc, t, target_path, "%"PRIu32, - (uint32_t) info.current_memkb); + libxl__xs_printf(gc, t, target_path, "%"PRIu32, + (uint32_t) info.current_memkb); *target_memkb = (uint32_t) info.current_memkb; } if (staticmax == NULL) { - libxl__xs_write(gc, t, max_path, "%"PRIu32, - (uint32_t) info.max_memkb); + libxl__xs_printf(gc, t, max_path, "%"PRIu32, + (uint32_t) info.max_memkb); *max_memkb = (uint32_t) info.max_memkb; } @@ -4839,8 +4839,8 @@ retry_transaction: goto out; } - libxl__xs_write(gc, t, GCSPRINTF("%s/memory/target", - dompath), "%"PRIu32, new_target_memkb); + libxl__xs_printf(gc, t, GCSPRINTF("%s/memory/target", dompath), + "%"PRIu32, new_target_memkb); rc = xc_domain_getinfolist(ctx->xch, domid, 1, &info); if (rc != 1 || info.domain != domid) { abort_transaction = 1; @@ -4850,8 +4850,8 @@ retry_transaction: libxl_dominfo_init(&ptr); xcinfo2xlinfo(ctx, &info, &ptr); uuid = libxl__uuid2string(gc, ptr.uuid); - libxl__xs_write(gc, t, GCSPRINTF("/vm/%s/memory", uuid), - "%"PRIu32, new_target_memkb / 1024); + libxl__xs_printf(gc, t, GCSPRINTF("/vm/%s/memory", uuid), + "%"PRIu32, new_target_memkb / 1024); libxl_dominfo_dispose(&ptr); out: @@ -5486,9 +5486,9 @@ static int libxl__set_vcpuonline_xenstore(libxl__gc *gc, uint32_t domid, retry_transaction: t = xs_transaction_start(CTX->xsh); for (i = 0; i <= info->vcpu_max_id; i++) - libxl__xs_write(gc, t, - GCSPRINTF("%s/cpu/%u/availability", dompath, i), - "%s", libxl_bitmap_test(cpumap, i) ? "online" : "offline"); + libxl__xs_printf(gc, t, + GCSPRINTF("%s/cpu/%u/availability", dompath, i), + "%s", libxl_bitmap_test(cpumap, i) ? "online" : "offline"); if (!xs_transaction_end(CTX->xsh, t, 0)) { if (errno == EAGAIN) goto retry_transaction; @@ -5984,7 +5984,8 @@ int libxl_send_sysrq(libxl_ctx *ctx, uint32_t domid, char sysrq) GC_INIT(ctx); char *dompath = libxl__xs_get_dompath(gc, domid); - libxl__xs_write(gc, XBT_NULL, GCSPRINTF("%s/control/sysrq", dompath), "%c", sysrq); + libxl__xs_printf(gc, XBT_NULL, GCSPRINTF("%s/control/sysrq", dompath), + "%c", sysrq); GC_FREE; return 0; @@ -6262,12 +6263,12 @@ int libxl_cpupool_create(libxl_ctx *ctx, const char *name, t = xs_transaction_start(ctx->xsh); xs_mkdir(ctx->xsh, t, GCSPRINTF("/local/pool/%d", *poolid)); - libxl__xs_write(gc, t, - GCSPRINTF("/local/pool/%d/uuid", *poolid), - "%s", uuid_string); - libxl__xs_write(gc, t, - GCSPRINTF("/local/pool/%d/name", *poolid), - "%s", name); + libxl__xs_printf(gc, t, + GCSPRINTF("/local/pool/%d/uuid", *poolid), + "%s", uuid_string); + libxl__xs_printf(gc, t, + GCSPRINTF("/local/pool/%d/name", *poolid), + "%s", name); if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN)) { GC_FREE; @@ -6358,9 +6359,9 @@ int libxl_cpupool_rename(libxl_ctx *ctx, const char *name, uint32_t poolid) for (;;) { t = xs_transaction_start(ctx->xsh); - libxl__xs_write(gc, t, - GCSPRINTF("/local/pool/%d/name", poolid), - "%s", name); + libxl__xs_printf(gc, t, + GCSPRINTF("/local/pool/%d/name", poolid), + "%s", name); if (xs_transaction_end(ctx->xsh, t, 0)) break; diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c index 343fc30..0ae074a 100644 --- a/tools/libxl/libxl_bootloader.c +++ b/tools/libxl/libxl_bootloader.c @@ -485,8 +485,8 @@ static void bootloader_gotptys(libxl__egc *egc, libxl__openpty_state *op) dom_console_xs_path = GCSPRINTF("%s/console/tty", dompath); - rc = libxl__xs_write(gc, XBT_NULL, dom_console_xs_path, "%s", - dom_console_slave_tty_path); + rc = libxl__xs_printf(gc, XBT_NULL, dom_console_xs_path, "%s", + dom_console_slave_tty_path); if (rc) { LOGE(ERROR,"xs write console path %s := %s failed", dom_console_xs_path, dom_console_slave_tty_path); diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 673e537..01ab831 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -678,8 +678,8 @@ static int store_libxl_entry(libxl__gc *gc, uint32_t domid, path = libxl__xs_libxl_path(gc, domid); path = GCSPRINTF("%s/dm-version", path); - return libxl__xs_write(gc, XBT_NULL, path, "%s", - libxl_device_model_version_to_string(b_info->device_model_version)); + return libxl__xs_printf(gc, XBT_NULL, path, "%s", + libxl_device_model_version_to_string(b_info->device_model_version)); } /*----- remus asynchronous checkpoint callback -----*/ diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index a4934df..2de0273 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -1535,14 +1535,14 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss) } libxl__write_stub_dmargs(gc, dm_domid, guest_domid, args); - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/image/device-model-domid", - libxl__xs_get_dompath(gc, guest_domid)), - "%d", dm_domid); - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/target", - libxl__xs_get_dompath(gc, dm_domid)), - "%d", guest_domid); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/image/device-model-domid", + libxl__xs_get_dompath(gc, guest_domid)), + "%d", dm_domid); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/target", + libxl__xs_get_dompath(gc, dm_domid)), + "%d", guest_domid); ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid); if (ret<0) { LOGE(ERROR, "setting target domain %d -> %d", dm_domid, guest_domid); @@ -1816,17 +1816,17 @@ void libxl__spawn_local_dm(libxl__egc *egc, libxl__dm_spawn_state *dmss) if (b_info->type == LIBXL_DOMAIN_TYPE_HVM) { path = xs_get_domain_path(ctx->xsh, domid); - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/hvmloader/bios", path), - "%s", libxl_bios_type_to_string(b_info->u.hvm.bios)); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/hvmloader/bios", path), + "%s", libxl_bios_type_to_string(b_info->u.hvm.bios)); /* Disable relocating memory to make the MMIO hole larger * unless we're running qemu-traditional and vNUMA is not * configured. */ - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/hvmloader/allow-memory-relocate", path), - "%d", - b_info->device_model_version==LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && - !libxl__vnuma_configured(b_info)); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/hvmloader/allow-memory-relocate", path), + "%d", + b_info->device_model_version==LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && + !libxl__vnuma_configured(b_info)); free(path); } @@ -1836,8 +1836,8 @@ void libxl__spawn_local_dm(libxl__egc *egc, libxl__dm_spawn_state *dmss) if (b_info->type == LIBXL_DOMAIN_TYPE_HVM && b_info->device_model_version == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL) - libxl__xs_write(gc, XBT_NULL, GCSPRINTF("%s/disable_pf", path), - "%d", !libxl_defbool_val(b_info->u.hvm.xen_platform_pci)); + libxl__xs_printf(gc, XBT_NULL, GCSPRINTF("%s/disable_pf", path), + "%d", !libxl_defbool_val(b_info->u.hvm.xen_platform_pci)); logfile_w = libxl__create_qemu_logfile(gc, GCSPRINTF("qemu-dm-%s", c_info->name)); diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 44d481b..517e838 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -825,15 +825,15 @@ static int hvm_build_set_xs_values(libxl__gc *gc, if (dom->smbios_module.guest_addr_out) { path = GCSPRINTF("/local/domain/%d/"HVM_XS_SMBIOS_PT_ADDRESS, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%"PRIx64, - dom->smbios_module.guest_addr_out); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%"PRIx64, + dom->smbios_module.guest_addr_out); if (ret) goto err; path = GCSPRINTF("/local/domain/%d/"HVM_XS_SMBIOS_PT_LENGTH, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%x", - dom->smbios_module.length); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%x", + dom->smbios_module.length); if (ret) goto err; } @@ -841,15 +841,15 @@ static int hvm_build_set_xs_values(libxl__gc *gc, if (dom->acpi_module.guest_addr_out) { path = GCSPRINTF("/local/domain/%d/"HVM_XS_ACPI_PT_ADDRESS, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%"PRIx64, - dom->acpi_module.guest_addr_out); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%"PRIx64, + dom->acpi_module.guest_addr_out); if (ret) goto err; path = GCSPRINTF("/local/domain/%d/"HVM_XS_ACPI_PT_LENGTH, domid); - ret = libxl__xs_write(gc, XBT_NULL, path, "0x%x", - dom->acpi_module.length); + ret = libxl__xs_printf(gc, XBT_NULL, path, "0x%x", + dom->acpi_module.length); if (ret) goto err; } @@ -1074,7 +1074,7 @@ int libxl__qemu_traditional_cmd(libxl__gc *gc, uint32_t domid, char *path = NULL; uint32_t dm_domid = libxl_get_stubdom_id(CTX, domid); path = libxl__device_model_xs_path(gc, dm_domid, domid, "/command"); - return libxl__xs_write(gc, XBT_NULL, path, "%s", cmd); + return libxl__xs_printf(gc, XBT_NULL, path, "%s", cmd); } /* @@ -1137,8 +1137,9 @@ int libxl__restore_emulator_xenstore_data(libxl__domain_create_state *dcs, goto out; } - libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/%s", xs_root, key), "%s", val); + libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/%s", xs_root, key), + "%s", val); } rc = 0; diff --git a/tools/libxl/libxl_exec.c b/tools/libxl/libxl_exec.c index df4aead..02e6c91 100644 --- a/tools/libxl/libxl_exec.c +++ b/tools/libxl/libxl_exec.c @@ -144,7 +144,7 @@ int libxl__spawn_record_pid(libxl__gc *gc, libxl__spawn_state *spawn, pid_t pid) rc = libxl__ev_child_xenstore_reopen(gc, spawn->what); if (rc) goto out; - r = libxl__xs_write(gc, XBT_NULL, spawn->pidpath, "%d", pid); + r = libxl__xs_printf(gc, XBT_NULL, spawn->pidpath, "%d", pid); if (r) { LOGE(ERROR, "write %s = %d: xenstore write failed", spawn->pidpath, pid); diff --git a/tools/libxl/libxl_genid.c b/tools/libxl/libxl_genid.c index 4e2f013..f1c4eb7 100644 --- a/tools/libxl/libxl_genid.c +++ b/tools/libxl/libxl_genid.c @@ -77,9 +77,9 @@ int libxl__ms_vm_genid_set(libxl__gc *gc, uint32_t domid, rc = ERROR_FAIL; goto out; } - rc = libxl__xs_write(gc, XBT_NULL, - GCSPRINTF("%s/platform/generation-id", dom_path), - "%"PRIu64 ":%" PRIu64, genid[0], genid[1]); + rc = libxl__xs_printf(gc, XBT_NULL, + GCSPRINTF("%s/platform/generation-id", dom_path), + "%"PRIu64 ":%" PRIu64, genid[0], genid[1]); if (rc < 0) goto out; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 1b99cd5..12b2b30 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -667,7 +667,7 @@ _hidden int libxl__xs_writev_perms(libxl__gc *gc, xs_transaction_t t, _hidden int libxl__xs_writev_atonce(libxl__gc *gc, const char *dir, char **kvs); -_hidden int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, +_hidden int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, const char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); /* Each fn returns 0 on success. * On error: returns -1, sets errno (no logging) */ @@ -702,7 +702,7 @@ int libxl__xs_read_checked(libxl__gc *gc, xs_transaction_t t, /* Does not include a trailing null. * May usefully be combined with GCSPRINTF if the format string - * behaviour of libxl__xs_write is desirable. */ + * behaviour of libxl__xs_printf is desirable. */ int libxl__xs_write_checked(libxl__gc *gc, xs_transaction_t t, const char *path, const char *string); diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c index 206b300..dc10cb7 100644 --- a/tools/libxl/libxl_pci.c +++ b/tools/libxl/libxl_pci.c @@ -254,7 +254,7 @@ retry_transaction2: xs_rm(ctx->xsh, t, GCSPRINTF("%s/vdev-%d", be_path, i)); xs_rm(ctx->xsh, t, GCSPRINTF("%s/opts-%d", be_path, i)); xs_rm(ctx->xsh, t, GCSPRINTF("%s/vdevfn-%d", be_path, i)); - libxl__xs_write(gc, t, num_devs_path, "%d", num - 1); + libxl__xs_printf(gc, t, num_devs_path, "%d", num - 1); for (j = i + 1; j < num; j++) { tmppath = GCSPRINTF("%s/state-%d", be_path, j); tmp = libxl__xs_read(gc, t, tmppath); @@ -733,7 +733,7 @@ static void pci_assignable_driver_path_write(libxl__gc *gc, pcidev->bus, pcidev->dev, pcidev->func); - if ( libxl__xs_write(gc, XBT_NULL, path, "%s", driver_path) < 0 ) { + if ( libxl__xs_printf(gc, XBT_NULL, path, "%s", driver_path) < 0 ) { LOGE(WARN, "Write of %s to node %s failed.", driver_path, path); } } @@ -971,14 +971,14 @@ static int qemu_pci_add_xenstore(libxl__gc *gc, uint32_t domid, state = libxl__xs_read(gc, XBT_NULL, path); path = libxl__device_model_xs_path(gc, dm_domid, domid, "/parameter"); if (pcidev->vdevfn) { - libxl__xs_write(gc, XBT_NULL, path, PCI_BDF_VDEVFN","PCI_OPTIONS, - pcidev->domain, pcidev->bus, pcidev->dev, - pcidev->func, pcidev->vdevfn, pcidev->msitranslate, - pcidev->power_mgmt); + libxl__xs_printf(gc, XBT_NULL, path, PCI_BDF_VDEVFN","PCI_OPTIONS, + pcidev->domain, pcidev->bus, pcidev->dev, + pcidev->func, pcidev->vdevfn, pcidev->msitranslate, + pcidev->power_mgmt); } else { - libxl__xs_write(gc, XBT_NULL, path, PCI_BDF","PCI_OPTIONS, - pcidev->domain, pcidev->bus, pcidev->dev, - pcidev->func, pcidev->msitranslate, pcidev->power_mgmt); + libxl__xs_printf(gc, XBT_NULL, path, PCI_BDF","PCI_OPTIONS, + pcidev->domain, pcidev->bus, pcidev->dev, + pcidev->func, pcidev->msitranslate, pcidev->power_mgmt); } libxl__qemu_traditional_cmd(gc, domid, "pci-ins"); @@ -1310,8 +1310,8 @@ static int qemu_pci_remove_xenstore(libxl__gc *gc, uint32_t domid, path = libxl__device_model_xs_path(gc, dm_domid, domid, "/state"); state = libxl__xs_read(gc, XBT_NULL, path); path = libxl__device_model_xs_path(gc, dm_domid, domid, "/parameter"); - libxl__xs_write(gc, XBT_NULL, path, PCI_BDF, pcidev->domain, - pcidev->bus, pcidev->dev, pcidev->func); + libxl__xs_printf(gc, XBT_NULL, path, PCI_BDF, pcidev->domain, + pcidev->bus, pcidev->dev, pcidev->func); /* Remove all functions at once atomically by only signalling * device-model for function 0 */ diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index f798de7..714038b 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -103,7 +103,7 @@ static int store_serial_port_info(libxl__qmp_handler *qmp, path = libxl__xs_get_dompath(gc, qmp->domid); path = GCSPRINTF("%s/serial/%d/tty", path, port); - ret = libxl__xs_write(gc, XBT_NULL, path, "%s", chardev + 4); + ret = libxl__xs_printf(gc, XBT_NULL, path, "%s", chardev + 4); GC_FREE; return ret; @@ -162,7 +162,7 @@ static int qmp_write_domain_console_item(libxl__gc *gc, int domid, path = libxl__xs_get_dompath(gc, domid); path = GCSPRINTF("%s/console/%s", path, item); - return libxl__xs_write(gc, XBT_NULL, path, "%s", value); + return libxl__xs_printf(gc, XBT_NULL, path, "%s", value); } static int qmp_register_vnc_callback(libxl__qmp_handler *qmp, diff --git a/tools/libxl/libxl_xshelp.c b/tools/libxl/libxl_xshelp.c index 46c6d6c..912a1f2 100644 --- a/tools/libxl/libxl_xshelp.c +++ b/tools/libxl/libxl_xshelp.c @@ -96,8 +96,8 @@ out: } -int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, - const char *path, const char *fmt, ...) +int libxl__xs_printf(libxl__gc *gc, xs_transaction_t t, + const char *path, const char *fmt, ...) { libxl_ctx *ctx = libxl__gc_owner(gc); char *s; -- 2.1.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-12-15 15:15 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-12-01 13:55 [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() Paul Durrant 2015-12-01 13:55 ` [PATCH v1 1/2] libxl: re-name " Paul Durrant 2015-12-01 13:55 ` [PATCH v1 2/2] libxl: re-implement libxl__xs_printf() Paul Durrant 2015-12-02 15:20 ` Ian Campbell 2015-12-02 15:22 ` Paul Durrant 2015-12-08 17:04 ` Ian Campbell 2015-12-15 12:29 ` Ian Campbell 2015-12-15 12:30 ` Ian Campbell 2015-12-15 13:52 ` Paul Durrant 2015-12-15 15:13 ` Ian Campbell -- strict thread matches above, loose matches on Subject: below -- 2015-11-25 15:28 [PATCH v1 0/2] libxl: change libxl__xs_write() to libxl__xs_printf() Paul Durrant 2015-11-25 15:28 ` [PATCH v1 1/2] libxl: re-name " Paul Durrant
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).