From patchwork Tue Oct 4 09:14:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Cedric Bosdonnat X-Patchwork-Id: 9361403 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4DD48600C8 for ; Tue, 4 Oct 2016 09:17:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 37511287FB for ; Tue, 4 Oct 2016 09:17:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 295D528970; Tue, 4 Oct 2016 09:17:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 69BFC287FB for ; Tue, 4 Oct 2016 09:17:36 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1brLoU-0004Oz-9n; Tue, 04 Oct 2016 09:15:02 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1brLoS-0004Os-OC for xen-devel@lists.xen.org; Tue, 04 Oct 2016 09:15:01 +0000 Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id 36/70-27186-11373F75; Tue, 04 Oct 2016 09:14:57 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRWlGSWpSXmKPExsVyuP0uqy5/8ed wg6+T1CyWfFzM4sDocXT3b6YAxijWzLyk/IoE1oyzT7YzFpxeyVqx4MUR9gbGjnmsXYxcHEIC Sxglvj5ewdLFyMnBK6An8WP7C2YQW1hAW2L7r1dsIDabgI7E17fPmUBsEaD4i1XrwOLMAlYSb xb+AouzCKhKvPp0AMzmFLCX2NU6iwliwWVGiS1rPgNt4wBqcJBo7pMDqZEQkJZYuKqRBSTMKy Ao8XeH8ARGnlkIRbMQErPAdmlKtG7/zQ5hy0s0b53NDGEnSaxob2KBsLMkOie3Q9mKElO6H7I vYGRfxahRnFpUllqka2igl1SUmZ5RkpuYmQPkGevlphYXJ6an5iQmFesl5+duYgQGZz0DA+MO xm1dzocYJTmYlER5K19/ChfiS8pPqcxILM6ILyrNSS0+xCjDwaEkwfux8HO4kGBRanpqRVpmD jBOYNISHDxKIrzXQdK8xQWJucWZ6RCpU4y6HFsW3FjLJMSSl5+XKiXOexqkSACkKKM0D24ELG YvMcpKCfMyMjAwCPEUpBblZpagyr9iFOdgVBLmPQQyhSczrwRu0yugI5iAjgjc8gHkiJJEhJR UA6Nb7OXehtxZD06/mP3j719G/jtTmFUqmn63zZHqOGMh7RlRcvD+hsS6UJMLJ25POc9haaR2 guHS39PLH8v/CzrG9ttP/nQUS6JDaNeZY42fvk5Mm76jp8Xs3/ak/2EL7fhvyS3krry+YFL/w SMnY1end967PXmbgm1fksbdi3PXLdhgfvGdi8EVJZbijERDLeai4kQAgOUoUdQCAAA= X-Env-Sender: cbosdonnat@suse.com X-Msg-Ref: server-6.tower-31.messagelabs.com!1475572495!37953734!1 X-Originating-IP: [195.135.221.5] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 48220 invoked from network); 4 Oct 2016 09:14:55 -0000 Received: from smtp.nue.novell.com (HELO smtp.nue.novell.com) (195.135.221.5) by server-6.tower-31.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 4 Oct 2016 09:14:55 -0000 Received: from laptop.vms (mhy71-2-88-167-63-197.fbx.proxad.net [88.167.63.197]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Tue, 04 Oct 2016 11:14:53 +0200 Message-ID: <1475572492.3315.3.camel@suse.com> From: Cedric Bosdonnat To: Ian Jackson Date: Tue, 04 Oct 2016 11:14:52 +0200 In-Reply-To: <22496.730.407667.327755@mariner.uk.xensource.com> References: <1473862944.3643.17.camel@suse.com> <20160915145025.GC13498@citrix.com> <20160915151102.GO15958@citrix.com> <1473954098.6008.8.camel@suse.com> <22496.730.407667.327755@mariner.uk.xensource.com> X-Mailer: Evolution 3.22.0 Mime-Version: 1.0 Cc: Wei Liu , xen-devel@lists.xen.org Subject: Re: [Xen-devel] per-domain logging X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Hi Ian and Wei, On Mon, 2016-09-19 at 16:23 +0100, Ian Jackson wrote: > Cedric Bosdonnat writes ("Re: [Xen-devel] per-domain logging"): > > On Thu, 2016-09-15 at 16:11 +0100, Wei Liu wrote: > > > IIRC there is already logfile abstraction inside libvirt -- can you just > > > pass in a libvirt logfile fd and try to demux there? > > > > > > The abstraction we have is something similar to the XenToolLogger, > > not something abstracting the log files. Even if we had that, how > > could we demux since there is no domain name in the libxl messages. I came up with a commit on the libvirt side writing a custom xtl_logger that demuxes the log messages. Here it is for the curious ones: https://github.com/cbosdo/libvirt/commit/5e28dd67c52a49b11635167469a8b60dcb4e287c This way, libvirt would put all log messages containing ': Domain %u:' in a separate log file and all non-matching messages would go to the default libxl-driver.log file. > Right. > > It's not trivial to change the xtl API because there is no > negotiation, just a vops structure.  I can think of a way to do it, > but do we want to make all xtl logger users (that is, all generators > of log messages) pass a domid ? > > Do we want to extend this to other information ?  (Not sure _what_ > other information.) > > Alternatively, we could have libxl (and perhaps libxc) put the domid > in a standard format in the message, so it could be extracted ? > > However we do it, we would have to add a domid to every LOG call in > libxl. Attached is a partial attempt at this that I wrote to test my libvirt code. How does that sound to you? Should I continue like this? Obviously I surely missed a few log messages that could get a domid, but it seems that even libxl has log messages that can't have a domid. --- Cedric From b1bbd97c00891e7daff55fce80850531fae80100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= Date: Tue, 4 Oct 2016 10:59:04 +0200 Subject: [PATCH] libxl: format the domain id in log messages In order to allow consuming applications demux log messages by domain, we need a constant and parsable way to display the domid in the libxl logs. This commit adds the domid where possible in the log and makes sure it is shown in the "Domain %"PRIu32":" format. --- tools/libxl/libxl.c | 420 ++++++++++++++++++++++++++++------------------------ 1 file changed, 225 insertions(+), 195 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 6a50e49..8aa551b 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -393,13 +393,13 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, if (!trans) { trans = our_trans = xs_transaction_start(ctx->xsh); if (!our_trans) { - LOGEV(ERROR, errno, "create xs transaction for domain (re)name"); + LOGEV(ERROR, errno, "Domain %"PRIu32": create xs transaction for domain (re)name", domid); goto x_fail; } } if (!new_name) { - LOG(ERROR, "new domain name not specified"); + LOG(ERROR, "Domain %"PRIu32": new domain name not specified", domid); rc = ERROR_INVAL; goto x_rc; } @@ -411,14 +411,14 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, if (rc == ERROR_INVAL) { /* no such domain, good */ } else if (rc != 0) { - LOG(ERROR, "unexpected error checking for existing domain"); + LOG(ERROR, "Domain %"PRIu32":unexpected error checking for existing domain", domid); goto x_rc; } else if (domid_e == domid) { /* domain already has this name, ok (but we do still * need the rest of the code as we may need to check * old_name, for example). */ } else { - LOG(ERROR, "domain with name \"%s\" already exists.", new_name); + LOG(ERROR, "Domain %"PRIu32": domain with name \"%s\" already exists.", domid, new_name); rc = ERROR_INVAL; goto x_rc; } @@ -428,14 +428,14 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, got_old_name = xs_read(ctx->xsh, trans, name_path, &got_old_len); if (!got_old_name) { LOGEV(ERROR, errno, - "check old name for domain %"PRIu32" allegedly named `%s'", + "Domain %"PRIu32": check old name for domain allegedly named `%s'", domid, old_name); goto x_fail; } if (strcmp(old_name, got_old_name)) { LOG(ERROR, - "domain %"PRIu32" allegedly named " + "Domain %"PRIu32": allegedly named " "`%s' is actually named `%s' - racing ?", domid, old_name, @@ -448,10 +448,10 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, if (!xs_write(ctx->xsh, trans, name_path, new_name, strlen(new_name))) { LOG(ERROR, - "failed to write new name `%s'" - " for domain %"PRIu32" previously named `%s'", - new_name, + "Domain %"PRIu32": failed to write new name `%s'" + " for domain previously named `%s'", domid, + new_name, old_name); goto x_fail; } @@ -472,7 +472,7 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, stub_dm_new_name, trans); if (rc) { - LOGE(ERROR, "unable to rename stub-domain"); + LOGE(ERROR, "Domain %"PRIu32": unable to rename stub-domain", domid); goto x_rc; } } @@ -482,16 +482,16 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, trans = our_trans = 0; if (errno != EAGAIN) { LOG(ERROR, - "failed to commit new name `%s'" - " for domain %"PRIu32" previously named `%s'", - new_name, + "Domain %"PRIu32": failed to commit new name `%s'" + " for domain previously named `%s'", domid, + new_name, old_name); goto x_fail; } LOG(DEBUG, - "need to retry rename transaction" - " for domain %"PRIu32" (name_path=\"%s\", new_name=\"%s\")", + "Domain %"PRIu32": need to retry rename transaction" + " for domain (name_path=\"%s\", new_name=\"%s\")", domid, name_path, new_name); @@ -677,7 +677,7 @@ int libxl_domain_info(libxl_ctx *ctx, libxl_dominfo *info_r, ret = xc_domain_getinfolist(ctx->xch, domid, 1, &xcinfo); if (ret<0) { - LOGE(ERROR, "getting domain info list"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info list", domid); GC_FREE; return ERROR_FAIL; } @@ -841,7 +841,7 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, /* The caller must set this defbool */ if (libxl_defbool_is_default(info->colo)) { - LOG(ERROR, "colo mode must be enabled/disabled"); + LOG(ERROR, "Domain %"PRIu32": colo mode must be enabled/disabled", domid); rc = ERROR_FAIL; goto out; } @@ -855,7 +855,9 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, if (libxl_defbool_val(info->colo) && libxl_defbool_val(info->compression)) { - LOG(ERROR, "cannot use memory checkpoint compression in COLO mode"); + LOG(ERROR, "Domain %"PRIu32": cannot use memory checkpoint " + "compression in COLO mode", + domid); rc = ERROR_FAIL; goto out; } @@ -864,8 +866,9 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, (libxl_defbool_val(info->blackhole) || !libxl_defbool_val(info->netbuf) || !libxl_defbool_val(info->diskbuf))) { - LOG(ERROR, "Unsafe mode must be enabled to replicate to /dev/null," - "disable network buffering and disk replication"); + LOG(ERROR, "Domain %"PRIu32": Unsafe mode must be enabled to replicate to /dev/null," + "disable network buffering and disk replication", + domid); rc = ERROR_FAIL; goto out; } @@ -968,7 +971,7 @@ int libxl_domain_pause(libxl_ctx *ctx, uint32_t domid) GC_INIT(ctx); ret = xc_domain_pause(ctx->xch, domid); if (ret<0) { - LOGE(ERROR, "pausing domain %d", domid); + LOGE(ERROR, "Domain %"PRIu32": pausing domain", domid); GC_FREE; return ERROR_FAIL; } @@ -985,7 +988,7 @@ int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid, ret = xc_domain_dumpcore(ctx->xch, domid, filename); if (ret<0) { - LOGE(ERROR, "core dumping domain %d to %s", domid, filename); + LOGE(ERROR, "Domain %"PRIu32": core dumping domain to %s", domid, filename); rc = ERROR_FAIL; goto out; } @@ -1014,7 +1017,7 @@ int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid) LIBXL_DEVICE_MODEL_VERSION_NONE) { rc = libxl__domain_resume_device_model(gc, domid); if (rc < 0) { - LOG(ERROR, "failed to unpause device model for domain %u:%d", + LOG(ERROR, "Domain %"PRIu32": failed to unpause device model for domain:%d", domid, rc); goto out; } @@ -1022,7 +1025,7 @@ int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid) } ret = xc_domain_unpause(ctx->xch, domid); if (ret<0) { - LOGE(ERROR, "unpausing domain %d", domid); + LOGE(ERROR, "Domain %"PRIu32": unpausing domain", domid); rc = ERROR_FAIL; } out: @@ -1046,7 +1049,7 @@ int libxl__domain_pvcontrol_available(libxl__gc *gc, uint32_t domid) ret = xc_hvm_param_get(ctx->xch, domid, HVM_PARAM_CALLBACK_IRQ, &pvdriver); if (ret<0) { - LOGE(ERROR, "getting HVM callback IRQ"); + LOGE(ERROR, "Domain %"PRIu32": getting HVM callback IRQ", domid); return ERROR_FAIL; } return !!pvdriver; @@ -1129,7 +1132,7 @@ static void domain_death_occurred(libxl__egc *egc, EGC_GC; libxl_evgen_domain_death *const evg = *evg_upd; - LOG(DEBUG, "%s", why); + LOG(DEBUG, "Domain %"PRIu32": %s", evg->domid, why); libxl_evgen_domain_death *evg_next = LIBXL_TAILQ_NEXT(evg, entry); *evg_upd = evg_next; @@ -1169,8 +1172,8 @@ static void domain_death_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, } gotend = &domaininfos[rc]; - LOG(DEBUG, "[evg=%p:%"PRIu32"] nentries=%d rc=%d %ld..%ld", - evg, evg->domid, nentries, rc, + LOG(DEBUG, "Domain %"PRIu32": [evg=%p] nentries=%d rc=%d %ld..%ld", + evg->domid, evg, nentries, rc, rc>0 ? (long)domaininfos[0].domain : 0, rc>0 ? (long)domaininfos[rc-1].domain : 0); @@ -1180,9 +1183,9 @@ static void domain_death_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, goto all_reported; } - LOG(DEBUG, "[evg=%p:%"PRIu32"]" + LOG(DEBUG, "Domain %"PRIu32": [evg=%p]" " got=domaininfos[%d] got->domain=%ld", - evg, evg->domid, (int)(got - domaininfos), + evg->domid, evg, (int)(got - domaininfos), got < gotend ? (long)got->domain : -1L); if (!rc) { @@ -1208,8 +1211,8 @@ static void domain_death_xswatch_callback(libxl__egc *egc, libxl__ev_xswatch *w, } assert(evg->domid == got->domain); - LOG(DEBUG, " exists shutdown_reported=%d"" dominf.flags=%x", - evg->shutdown_reported, got->flags); + LOG(DEBUG, "Domain %"PRIu32": exists shutdown_reported=%d"" dominf.flags=%x", + evg->domid, evg->shutdown_reported, got->flags); if (got->flags & XEN_DOMINF_dying) { domain_death_occurred(egc, &evg, "dying"); @@ -1459,7 +1462,7 @@ static void domain_destroy_cb(libxl__egc *egc, libxl__domain_destroy_state *dds, STATE_AO_GC(dds->ao); if (rc) - LOG(ERROR, "destruction of domain %u failed", dds->domid); + LOG(ERROR, "Domain %"PRIu32": destruction of domain failed", dds->domid); libxl__ao_complete(egc, ao, rc); } @@ -1508,7 +1511,9 @@ static void stubdom_destroy_callback(libxl__egc *egc, const char *savefile; if (rc) { - LOG(ERROR, "unable to destroy stubdom with domid %u", dis->domid); + LOG(ERROR, "Domain %"PRIu32": unable to destroy stubdom with domid %u", + dds->domain.domid, + dis->domid); dds->rc = rc; } @@ -1516,7 +1521,9 @@ static void stubdom_destroy_callback(libxl__egc *egc, savefile = libxl__device_model_savefile(gc, dis->domid); rc = libxl__remove_file(gc, savefile); if (rc) { - LOG(ERROR, "failed to remove device-model savefile %s", savefile); + LOG(ERROR, "Domain %"PRIu32": failed to remove device-model savefile %s", + dds->domain.domid, + savefile); } destroy_finish_check(egc, dds); @@ -1530,7 +1537,7 @@ static void domain_destroy_callback(libxl__egc *egc, libxl__domain_destroy_state *dds = CONTAINER_OF(dis, *dds, domain); if (rc) { - LOG(ERROR, "unable to destroy guest with domid %u", dis->domid); + LOG(ERROR, "Domain %"PRIu32": unable to destroy guest", dis->domid); dds->rc = rc; } @@ -1571,7 +1578,7 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) case 0: break; case ERROR_DOMAIN_NOTFOUND: - LOG(ERROR, "non-existant domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": non-existant domain", domid); default: goto out; } @@ -1600,14 +1607,14 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) } if (libxl__device_pci_destroy_all(gc, domid) < 0) - LOG(ERROR, "pci shutdown failed for domid %d", domid); + LOG(ERROR, "Domain %"PRIu32": pci shutdown failed", domid); rc = xc_domain_pause(ctx->xch, domid); if (rc < 0) { - LOGEV(ERROR, rc, "xc_domain_pause failed for %d", domid); + LOGEV(ERROR, rc, "Domain %"PRIu32": xc_domain_pause failed", domid); } if (dm_present) { if (libxl__destroy_device_model(gc, domid) < 0) - LOG(ERROR, "libxl__destroy_device_model failed for %d", domid); + LOG(ERROR, "Domain %"PRIu32": libxl__destroy_device_model failed", domid); libxl__qmp_cleanup(gc, domid); } @@ -1643,15 +1650,15 @@ static void devices_destroy_cb(libxl__egc *egc, } if (rc < 0) - LOG(ERROR, "libxl__devices_destroy failed for %d", domid); + LOG(ERROR, "Domain %"PRIu32": libxl__devices_destroy failed", domid); vm_path = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/vm", dom_path)); if (vm_path) if (!xs_rm(ctx->xsh, XBT_NULL, vm_path)) - LOGE(ERROR, "xs_rm failed for %s", vm_path); + LOGE(ERROR, "Domain %"PRIu32": xs_rm failed for %s", domid, vm_path); if (!xs_rm(ctx->xsh, XBT_NULL, dom_path)) - LOGE(ERROR, "xs_rm failed for %s", dom_path); + LOGE(ERROR, "Domain %"PRIu32": xs_rm failed for %s", domid, dom_path); xs_rm(ctx->xsh, XBT_NULL, libxl__xs_libxl_path(gc, domid)); xs_rm(ctx->xsh, XBT_NULL, GCSPRINTF( "/local/domain/%d/hvmloader", domid)); @@ -1703,12 +1710,12 @@ static void devices_destroy_cb(libxl__egc *egc, _exit(errno); } else { LOGE(ERROR, - "xc_domain_destroy failed for %d (with difficult errno value %d)", + "Domain %"PRIu32": xc_domain_destroy failed (with difficult errno value %d)", domid, errno); _exit(-1); } } - LOG(DEBUG, "forked pid %ld for destroy of domain %d", (long)rc, domid); + LOG(DEBUG, "Domain %"PRIu32": forked pid %ld for destroy of domain", domid, (long)rc); return; @@ -1728,7 +1735,7 @@ static void domain_destroy_domid_cb(libxl__egc *egc, if (status) { if (WIFEXITED(status) && WEXITSTATUS(status)<126) { LOGEV(ERROR, WEXITSTATUS(status), - "xc_domain_destroy failed for %"PRIu32"", dis->domid); + "Domain %"PRIu32": xc_domain_destroy failed", dis->domid); } else { libxl_report_child_exitstatus(CTX, XTL_ERROR, "async domain destroy", pid, status); @@ -1821,13 +1828,14 @@ int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num, rc = libxl__console_tty_path(gc, domid, cons_num, type, &tty_path); if (rc) { - LOG(ERROR, "Failed to get tty path for domain %d\n", domid); + LOG(ERROR, "Domain %"PRIu32": Failed to get tty path\n", domid); goto out; } tty = libxl__xs_read(gc, XBT_NULL, tty_path); if (!tty || tty[0] == '\0') { - LOGE(ERROR,"unable to read console tty path `%s'",tty_path); + LOGE(ERROR,"Domain %"PRIu32": unable to read console tty path `%s'", + domid, tty_path); rc = ERROR_FAIL; goto out; } @@ -1918,7 +1926,7 @@ int libxl_vncviewer_exec(libxl_ctx *ctx, uint32_t domid, int autopass) GCSPRINTF( "/local/domain/%d/console/vnc-port", domid)); if (!vnc_port) { - LOG(ERROR, "Cannot get vnc-port of domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": Cannot get vnc-port", domid); goto x_fail; } @@ -1945,13 +1953,13 @@ int libxl_vncviewer_exec(libxl_ctx *ctx, uint32_t domid, int autopass) char tmpname[] = "/tmp/vncautopass.XXXXXX"; autopass_fd = mkstemp(tmpname); if ( autopass_fd < 0 ) { - LOGE(ERROR, "mkstemp %s failed", tmpname); + LOGE(ERROR, "Domain %"PRIu32": mkstemp %s failed", domid, tmpname); goto x_fail; } if ( unlink(tmpname) ) { /* should never happen */ - LOGE(ERROR, "unlink %s failed", tmpname); + LOGE(ERROR, "Domain %"PRIu32": unlink %s failed", domid, tmpname); goto x_fail; } @@ -1960,7 +1968,7 @@ int libxl_vncviewer_exec(libxl_ctx *ctx, uint32_t domid, int autopass) goto x_fail; if ( lseek(autopass_fd, SEEK_SET, 0) ) { - LOGE(ERROR, "rewind %s (autopass) failed", tmpname); + LOGE(ERROR, "Domain %"PRIu32": rewind %s (autopass) failed", domid, tmpname); goto x_fail; } @@ -2002,7 +2010,8 @@ void device_addrm_aocomplete(libxl__egc *egc, libxl__ao_device *aodev) if (aodev->rc) { if (aodev->dev) { - LOG(ERROR, "unable to %s %s with id %u", + LOG(ERROR, "Domain %"PRIu32": unable to %s %s with id %u", + aodev->dev->domid, libxl__device_action_to_string(aodev->action), libxl__device_kind_to_string(aodev->dev->kind), aodev->dev->devid); @@ -2067,7 +2076,8 @@ int libxl__device_disk_setdefault(libxl__gc *gc, libxl_device_disk *disk, LIBXL_DEVICE_MODEL_VERSION_NONE) { if (!(disk->backend == LIBXL_DISK_BACKEND_QDISK || disk->backend == LIBXL_DISK_BACKEND_UNKNOWN)) { - LOG(ERROR, "Backend for CD devices on HVM guests must be Qdisk"); + LOG(ERROR, "Domain %"PRIu32": Backend for CD devices on HVM guests must be Qdisk", + domid); return ERROR_FAIL; } disk->backend = LIBXL_DISK_BACKEND_QDISK; @@ -2085,8 +2095,8 @@ int libxl__device_from_disk(libxl__gc *gc, uint32_t domid, devid = libxl__device_disk_dev_number(disk->vdev, NULL, NULL); if (devid==-1) { - LOG(ERROR, "Invalid or unsupported"" virtual disk identifier %s", - disk->vdev); + LOG(ERROR, "Domain %"PRIu32": Invalid or unsupported"" virtual disk identifier %s", + domid, disk->vdev); return ERROR_INVAL; } @@ -2104,7 +2114,8 @@ int libxl__device_from_disk(libxl__gc *gc, uint32_t domid, device->backend_kind = LIBXL__DEVICE_KIND_QDISK; break; default: - LOG(ERROR, "unrecognized disk backend type: %d", disk->backend); + LOG(ERROR, "Domain %"PRIu32": unrecognized disk backend type: %d", + domid, disk->backend); return ERROR_INVAL; } @@ -2200,15 +2211,15 @@ static void device_disk_add(libxl__egc *egc, uint32_t domid, GCNEW(device); rc = libxl__device_from_disk(gc, domid, disk, device); if (rc != 0) { - LOG(ERROR, "Invalid or unsupported"" virtual disk identifier %s", - disk->vdev); + LOG(ERROR, "Domain %"PRIu32": Invalid or unsupported"" virtual disk identifier %s", + domid, disk->vdev); goto out; } rc = libxl__device_exists(gc, t, device); if (rc < 0) goto out; if (rc == 1) { /* already exists in xenstore */ - LOG(ERROR, "device already exists in xenstore"); + LOG(ERROR, "Domain %"PRIu32": device already exists in xenstore", domid); aodev->action = LIBXL__DEVICE_ACTION_ADD; /* for error message */ rc = ERROR_DEVICE_EXISTS; goto out; @@ -2234,7 +2245,8 @@ static void device_disk_add(libxl__egc *egc, uint32_t domid, dev = libxl__blktap_devpath(gc, disk->pdev_path, disk->format); if (!dev) { - LOG(ERROR, "failed to get blktap devpath for %p", + LOG(ERROR, "Domain %"PRIu32": failed to get blktap devpath for %p", + domid, disk->pdev_path); rc = ERROR_FAIL; goto out; @@ -2270,8 +2282,8 @@ static void device_disk_add(libxl__egc *egc, uint32_t domid, assert(device->backend_kind == LIBXL__DEVICE_KIND_QDISK); break; default: - LOG(ERROR, "unrecognized disk backend type: %d", - disk->backend); + LOG(ERROR, "Domain %"PRIu32": unrecognized disk backend type: %d", + domid, disk->backend); rc = ERROR_INVAL; goto out; } @@ -2654,26 +2666,30 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk, goto out; } if (type != LIBXL_DOMAIN_TYPE_HVM) { - LOG(ERROR, "cdrom-insert requires an HVM domain"); + LOG(ERROR, "Domain %"PRIu32": cdrom-insert requires an HVM domain", + domid); rc = ERROR_INVAL; goto out; } if (libxl_get_stubdom_id(ctx, domid) != 0) { - LOG(ERROR, "cdrom-insert doesn't work for stub domains"); + LOG(ERROR, "Domain %"PRIu32": cdrom-insert doesn't work for stub domains", + domid); rc = ERROR_INVAL; goto out; } dm_ver = libxl__device_model_version_running(gc, domid); if (dm_ver == -1) { - LOG(ERROR, "cannot determine device model version"); + LOG(ERROR, "Domain %"PRIu32": cannot determine device model version", + domid); rc = ERROR_FAIL; goto out; } if (dm_ver == LIBXL_DEVICE_MODEL_VERSION_NONE) { - LOG(ERROR, "Guests without a device model cannot use cd-insert"); + LOG(ERROR, "Domain %"PRIu32": Guests without a device model cannot use cd-insert", + domid); rc = ERROR_FAIL; goto out; } @@ -2688,7 +2704,7 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk, } } if (i == num) { - LOG(ERROR, "Virtual device not found"); + LOG(ERROR, "Domain %"PRIu32": Virtual device not found", domid); rc = ERROR_FAIL; goto out; } @@ -2748,8 +2764,8 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk, tmp = libxl__xs_read(gc, t, GCSPRINTF("%s/frontend", libxl_path)); if (!tmp) { - LOG(ERROR, "Internal error: %s does not exist", - GCSPRINTF("%s/frontend", libxl_path)); + LOG(ERROR, "Domain %"PRIu32": Internal error: %s does not exist", + domid, GCSPRINTF("%s/frontend", libxl_path)); rc = ERROR_FAIL; goto out; } @@ -2787,8 +2803,8 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk, tmp = libxl__xs_read(gc, t, GCSPRINTF("%s/frontend", libxl_path)); if (!tmp) { - LOG(ERROR, "Internal error: %s does not exist", - GCSPRINTF("%s/frontend", libxl_path)); + LOG(ERROR, "Domain %"PRIu32": Internal error: %s does not exist", + domid, GCSPRINTF("%s/frontend", libxl_path)); rc = ERROR_FAIL; goto out; } @@ -2908,8 +2924,8 @@ char *libxl__device_disk_find_local_path(libxl__gc *gc, int rc; LOG(DEBUG, - "Run from a script; checking for physical-device-path (vdev %s)", - disk->vdev); + "Domain %"PRIu32": Run from a script; checking for physical-device-path (vdev %s)", + guest_domid, disk->vdev); rc = libxl__device_from_disk(gc, guest_domid, disk, &device); if (rc < 0) @@ -2919,13 +2935,13 @@ char *libxl__device_disk_find_local_path(libxl__gc *gc, pdpath = libxl__sprintf(gc, "%s/physical-device-path", be_path); - LOG(DEBUG, "Attempting to read node %s", pdpath); + LOG(DEBUG, "Domain %"PRIu32": Attempting to read node %s", guest_domid, pdpath); path = libxl__xs_read(gc, XBT_NULL, pdpath); if (path) - LOG(DEBUG, "Accessing cooked block device %s", path); + LOG(DEBUG, "Domain %"PRIu32": Accessing cooked block device %s", guest_domid, path); else - LOG(DEBUG, "No physical-device-path, can't access locally."); + LOG(DEBUG, "Domain %"PRIu32": No physical-device-path, can't access locally.", guest_domid); goto out; } @@ -3066,7 +3082,8 @@ static void local_device_detach_cb(libxl__egc *egc, libxl__ao_device *aodev) int rc; if (aodev->rc) { - LOGE(ERROR, "unable to %s %s with id %u", + LOGE(ERROR, "Domain %"PRIu32": unable to %s %s with id %u", + aodev->dev->domid, libxl__device_action_to_string(aodev->action), libxl__device_kind_to_string(aodev->dev->kind), aodev->dev->devid); @@ -3099,7 +3116,7 @@ int libxl__device_console_add(libxl__gc *gc, uint32_t domid, goto out; } if (!console->devid && (console->name || console->path)) { - LOG(ERROR, "Primary console has invalid configuration"); + LOG(ERROR, "Domain %"PRIu32": Primary console has invalid configuration", domid); rc = ERROR_INVAL; goto out; } @@ -3337,7 +3354,7 @@ libxl_device_channel *libxl_device_channel_list(libxl_ctx *ctx, return channels; out_err: - LOG(ERROR, "Unable to list channels"); + LOG(ERROR, "Domain %"PRIu32": Unable to list channels", domid); while (*num) { (*num)--; libxl_device_channel_dispose(&channels[*num]); @@ -3449,7 +3466,7 @@ int libxl_device_vkb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_vkb *vkb, rc = libxl__device_vkb_add(gc, domid, vkb); if (rc) { - LOG(ERROR, "unable to add vkb device"); + LOG(ERROR, "Domain %"PRIu32": unable to add vkb device", domid); goto out; } @@ -3549,7 +3566,7 @@ int libxl_device_vfb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_vfb *vfb, rc = libxl__device_vfb_add(gc, domid, vfb); if (rc) { - LOG(ERROR, "unable to add vfb device"); + LOG(ERROR, "Domain %"PRIu32": unable to add vfb device", domid); goto out; } @@ -3730,7 +3747,7 @@ static void qdisk_spawn_outcome(libxl__egc *egc, libxl__dm_spawn_state *dmss, { STATE_AO_GC(dmss->spawn.ao); - LOG(DEBUG, "qdisk backend spawn for domain %u %s", dmss->guest_domid, + LOG(DEBUG, "Domain %"PRIu32": qdisk backend spawn %s", dmss->guest_domid, rc ? "failed" : "succeed"); libxl__nested_ao_free(dmss->spawn.ao); @@ -3884,7 +3901,7 @@ static void backend_watch_callback(libxl__egc *egc, libxl__ev_xswatch *watch, dguest->domid = dev->domid; LIBXL_SLIST_INIT(&dguest->devices); LIBXL_SLIST_INSERT_HEAD(&ddomain->guests, dguest, next); - LOG(DEBUG, "added domain %u to the list of active guests", + LOG(DEBUG, "Domain %"PRIu32": added domain to the list of active guests", dguest->domid); } ddev = search_for_device(dguest, dev); @@ -3902,7 +3919,8 @@ static void backend_watch_callback(libxl__egc *egc, libxl__ev_xswatch *watch, ddev = libxl__zalloc(NOGC, sizeof(*ddev)); ddev->dev = dev; LIBXL_SLIST_INSERT_HEAD(&dguest->devices, ddev, next); - LOG(DEBUG, "added device %s to the list of active devices", path); + LOG(DEBUG, "Domain %"PRIu32": added device %s to the list of active devices", + dev->domid, path); rc = add_device(egc, nested_ao, dguest, ddev); if (rc > 0) free_ao = true; @@ -3916,7 +3934,8 @@ static void backend_watch_callback(libxl__egc *egc, libxl__ev_xswatch *watch, */ LIBXL_SLIST_REMOVE(&dguest->devices, ddev, libxl__ddomain_device, next); - LOG(DEBUG, "removed device %s from the list of active devices", path); + LOG(DEBUG, "Domain %"PRIu32": removed device %s from the list of active devices", + dev->domid, path); rc = remove_device(egc, nested_ao, dguest, ddev); if (rc > 0) free_ao = true; @@ -3927,7 +3946,7 @@ static void backend_watch_callback(libxl__egc *egc, libxl__ev_xswatch *watch, if (num_devs == 0) { LIBXL_SLIST_REMOVE(&ddomain->guests, dguest, libxl__ddomain_guest, next); - LOG(DEBUG, "removed domain %u from the list of active guests", + LOG(DEBUG, "Domain %"PRIu32": removed domain from the list of active guests", dguest->domid); /* Clear any leftovers in libxl/ */ libxl__xs_rm_checked(gc, XBT_NULL, @@ -4037,24 +4056,27 @@ int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint64_t max_memkb) mem = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/memory/target", dompath)); if (!mem) { - LOGE(ERROR, "cannot get memory info from %s/memory/target", dompath); + LOGE(ERROR, "Domain %"PRIu32": cannot get memory info from %s/memory/target", + domid, dompath); goto out; } memorykb = strtoull(mem, &endptr, 10); if (*endptr != '\0') { - LOGE(ERROR, "invalid memory %s from %s/memory/target\n", mem, dompath); + LOGE(ERROR, "Domain %"PRIu32": invalid memory %s from %s/memory/target\n", + domid, mem, dompath); goto out; } if (max_memkb < memorykb) { LOGE(ERROR, - "memory_static_max must be greater than or or equal to memory_dynamic_max"); + "Domain %"PRIu32": memory_static_max must be greater than or or equal to memory_dynamic_max", + domid); goto out; } rc = xc_domain_setmaxmem(ctx->xch, domid, max_memkb + LIBXL_MAXMEM_CONSTANT); if (rc != 0) { LOGE(ERROR, - "xc_domain_setmaxmem domid=%d memkb=%"PRIu64" failed ""rc=%d\n", + "Domain %"PRIu32": xc_domain_setmaxmem memkb=%"PRIu64" failed ""rc=%d\n", domid, max_memkb + LIBXL_MAXMEM_CONSTANT, rc); goto out; } @@ -4094,7 +4116,7 @@ retry_transaction: if (target) { *target_memkb = strtoull(target, &endptr, 10); if (*endptr != '\0') { - LOGE(ERROR, "invalid memory target %s from %s\n", target, + LOGE(ERROR, "Domain %"PRIu32": invalid memory target %s from %s\n", 0, target, target_path); rc = ERROR_FAIL; goto out; @@ -4104,7 +4126,8 @@ retry_transaction: if (staticmax) { *max_memkb = strtoull(staticmax, &endptr, 10); if (*endptr != '\0') { - LOGE(ERROR, "invalid memory static-max %s from %s\n", staticmax, + LOGE(ERROR, "Domain %"PRIu32": invalid memory static-max %s from %s\n", 0, + staticmax, max_path); rc = ERROR_FAIL; goto out; @@ -4183,16 +4206,16 @@ retry_transaction: if (lrc < 0) { rc = ERROR_FAIL; goto out_no_transaction; } goto retry_transaction; } else if (!target) { - LOGE(ERROR, "cannot get target memory info from %s/memory/target", - dompath); + LOGE(ERROR, "Domain %"PRIu32": cannot get target memory info from %s/memory/target", + domid, dompath); abort_transaction = 1; rc = ERROR_FAIL; goto out; } else { current_target_memkb = strtoull(target, &endptr, 10); if (*endptr != '\0') { - LOGE(ERROR, "invalid memory target %s from %s/memory/target\n", - target, dompath); + LOGE(ERROR, "Domain %"PRIu32": invalid memory target %s from %s/memory/target\n", + domid, target, dompath); abort_transaction = 1; rc = ERROR_FAIL; goto out; @@ -4200,16 +4223,16 @@ retry_transaction: } memmax = libxl__xs_read(gc, t, GCSPRINTF("%s/memory/static-max", dompath)); if (!memmax) { - LOGE(ERROR, "cannot get memory info from %s/memory/static-max", - dompath); + LOGE(ERROR, "Domain %"PRIu32": cannot get memory info from %s/memory/static-max", + domid, dompath); abort_transaction = 1; rc = ERROR_FAIL; goto out; } memorykb = strtoull(memmax, &endptr, 10); if (*endptr != '\0') { - LOGE(ERROR, "invalid max memory %s from %s/memory/static-max\n", - memmax, dompath); + LOGE(ERROR, "Domain %"PRIu32": invalid max memory %s from %s/memory/static-max\n", + domid, memmax, dompath); abort_transaction = 1; rc = ERROR_FAIL; goto out; @@ -4228,8 +4251,8 @@ retry_transaction: new_target_memkb = target_memkb - videoram; if (new_target_memkb > memorykb) { LOG(ERROR, - "memory_dynamic_max must be less than or equal to" - " memory_static_max\n"); + "Domain %"PRIu32": memory_dynamic_max must be less than or equal to" + " memory_static_max\n", domid); abort_transaction = 1; rc = ERROR_INVAL; goto out; @@ -4237,8 +4260,8 @@ retry_transaction: if (!domid && new_target_memkb < LIBXL_MIN_DOM0_MEM) { LOG(ERROR, - "new target %"PRIu64" for dom0 is below the minimum threshold", - new_target_memkb); + "Domain %"PRIu32": new target %"PRIu64" for dom0 is below the minimum threshold", + domid, new_target_memkb); abort_transaction = 1; rc = ERROR_INVAL; goto out; @@ -4250,7 +4273,7 @@ retry_transaction: LIBXL_MAXMEM_CONSTANT); if (r != 0) { LOGE(ERROR, - "xc_domain_setmaxmem domid=%u memkb=%"PRIu64" failed ""rc=%d\n", + "Domain %"PRIu32": xc_domain_setmaxmem memkb=%"PRIu64" failed ""rc=%d\n", domid, memorykb + LIBXL_MAXMEM_CONSTANT, r); @@ -4264,7 +4287,7 @@ retry_transaction: (new_target_memkb + LIBXL_MAXMEM_CONSTANT) / 4, NULL, NULL, NULL); if (r != 0) { LOGE(ERROR, - "xc_domain_set_pod_target domid=%d, memkb=%"PRIu64" failed rc=%d\n", + "Domain %"PRIu32": xc_domain_set_pod_target, memkb=%"PRIu64" failed rc=%d\n", domid, new_target_memkb / 4, r); @@ -4319,25 +4342,26 @@ static int libxl__get_memory_target(libxl__gc *gc, uint32_t domid, if (rc < 0) goto out; } else if (!target) { - LOGE(ERROR, "cannot get target memory info from %s/memory/target", - dompath); + LOGE(ERROR, "Domain %"PRIu32": cannot get target memory info from %s/memory/target", + domid, dompath); goto out; } else if (!static_max) { LOGE(ERROR, - "cannot get target memory info from %s/memory/static-max", - dompath); + "Domain %"PRIu32": cannot get target memory info from %s/memory/static-max", + domid, dompath); goto out; } else { target_memkb = strtoull(target, &endptr, 10); if (*endptr != '\0') { - LOGE(ERROR, "invalid memory target %s from %s/memory/target\n", - target, dompath); + LOGE(ERROR, "Domain %"PRIu32": invalid memory target %s from %s/memory/target\n", + domid, target, dompath); goto out; } max_memkb = strtoull(static_max, &endptr, 10); if (*endptr != '\0') { LOGE(ERROR, - "invalid memory target %s from %s/memory/static-max\n", + "Domain %"PRIu32": invalid memory target %s from %s/memory/static-max\n", + domid, static_max, dompath); goto out; @@ -4831,7 +4855,7 @@ libxl_vcpuinfo *libxl_list_vcpu(libxl_ctx *ctx, uint32_t domid, xc_vcpuinfo_t vcpuinfo; if (xc_domain_getinfolist(ctx->xch, domid, 1, &domaininfo) != 1) { - LOGE(ERROR, "getting infolist"); + LOGE(ERROR, "Domain %"PRIu32": getting infolist", domid); GC_FREE; return NULL; } @@ -4855,14 +4879,14 @@ libxl_vcpuinfo *libxl_list_vcpu(libxl_ctx *ctx, uint32_t domid, if (libxl_cpu_bitmap_alloc(ctx, &ptr->cpumap_soft, 0)) goto err; if (xc_vcpu_getinfo(ctx->xch, domid, *nr_vcpus_out, &vcpuinfo) == -1) { - LOGE(ERROR, "getting vcpu info"); + LOGE(ERROR, "Domain %"PRIu32": getting vcpu info", domid); goto err; } if (xc_vcpu_getaffinity(ctx->xch, domid, *nr_vcpus_out, ptr->cpumap.map, ptr->cpumap_soft.map, XEN_VCPUAFFINITY_SOFT|XEN_VCPUAFFINITY_HARD) == -1) { - LOGE(ERROR, "getting vcpu affinity"); + LOGE(ERROR, "Domain %"PRIu32": getting vcpu affinity", domid); goto err; } ptr->vcpuid = *nr_vcpus_out; @@ -4926,7 +4950,7 @@ static int libxl__set_vcpuaffinity(libxl_ctx *ctx, uint32_t domid, cpumap_hard ? hard.map : NULL, cpumap_soft ? soft.map : NULL, flags)) { - LOGE(ERROR, "setting vcpu affinity"); + LOGE(ERROR, "Domain %"PRIu32": setting vcpu affinity", domid); rc = ERROR_FAIL; goto out; } @@ -4938,20 +4962,20 @@ static int libxl__set_vcpuaffinity(libxl_ctx *ctx, uint32_t domid, */ if (cpumap_hard && !libxl_bitmap_equal(cpumap_hard, &hard, 0)) - LOG(DEBUG, "New hard affinity for vcpu %d has unreachable cpus", - vcpuid); + LOG(DEBUG, "Domain %"PRIu32": New hard affinity for vcpu %d has unreachable cpus", + domid, vcpuid); /* * Soft affinity can both be different from what asked and empty. Check * for (and report) both. */ if (cpumap_soft) { if (!libxl_bitmap_equal(cpumap_soft, &soft, 0)) - LOG(DEBUG, "New soft affinity for vcpu %d has unreachable cpus", - vcpuid); + LOG(DEBUG, "Domain %"PRIu32": New soft affinity for vcpu %d has unreachable cpus", + domid, vcpuid); if (libxl_bitmap_is_empty(&soft)) - LOG(WARN, "all cpus in soft affinity of vcpu %d are unreachable." + LOG(WARN, "Domain %"PRIu32": all cpus in soft affinity of vcpu %d are unreachable." " Only hard affinity will be considered for scheduling", - vcpuid); + domid, vcpuid); } rc = 0; @@ -4989,7 +5013,7 @@ int libxl_set_vcpuaffinity_all(libxl_ctx *ctx, uint32_t domid, for (i = 0; i < max_vcpus; i++) { if (libxl_set_vcpuaffinity(ctx, domid, i, cpumap_hard, cpumap_soft)) { - LOG(WARN, "failed to set affinity for %d", i); + LOG(WARN, "Domain %"PRIu32": failed to set affinity for %d", domid, i); rc = ERROR_FAIL; } } @@ -5003,7 +5027,7 @@ int libxl_domain_set_nodeaffinity(libxl_ctx *ctx, uint32_t domid, { GC_INIT(ctx); if (xc_domain_node_setaffinity(ctx->xch, domid, nodemap->map)) { - LOGE(ERROR, "setting node affinity"); + LOGE(ERROR, "Domain %"PRIu32": setting node affinity", domid); GC_FREE; return ERROR_FAIL; } @@ -5016,7 +5040,7 @@ int libxl_domain_get_nodeaffinity(libxl_ctx *ctx, uint32_t domid, { GC_INIT(ctx); if (xc_domain_node_getaffinity(ctx->xch, domid, nodemap->map)) { - LOGE(ERROR, "getting node affinity"); + LOGE(ERROR, "Domain %"PRIu32": getting node affinity", domid); GC_FREE; return ERROR_FAIL; } @@ -5064,7 +5088,7 @@ static int libxl__set_vcpuonline_qmp(libxl__gc *gc, uint32_t domid, libxl_bitmap_set_none(¤t_map); rc = libxl__qmp_query_cpus(gc, domid, ¤t_map); if (rc) { - LOG(ERROR, "failed to query cpus for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": failed to query cpus", domid); goto out; } @@ -5076,7 +5100,7 @@ static int libxl__set_vcpuonline_qmp(libxl__gc *gc, uint32_t domid, libxl_for_each_set_bit(i, final_map) { rc = libxl__qmp_cpu_add(gc, domid, i); if (rc) { - LOG(ERROR, "failed to add cpu %d to domain %d", i, domid); + LOG(ERROR, "Domain %"PRIu32": failed to add cpu %d", domid, i); goto out; } } @@ -5098,15 +5122,15 @@ int libxl_set_vcpuonline(libxl_ctx *ctx, uint32_t domid, libxl_bitmap *cpumap) rc = libxl_domain_info(CTX, &info, domid); if (rc < 0) { - LOGE(ERROR, "getting domain info list"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info list", domid); goto out; } maxcpus = libxl_bitmap_count_set(cpumap); if (maxcpus > info.vcpu_max_id + 1) { - LOGE(ERROR, "Requested %d VCPUs, however maxcpus is %d!", - maxcpus, info.vcpu_max_id + 1); + LOGE(ERROR, "Domain %"PRIu32": Requested %d VCPUs, however maxcpus is %d!", + domid, maxcpus, info.vcpu_max_id + 1); rc = ERROR_FAIL; goto out; } @@ -5167,7 +5191,7 @@ static int sched_credit_domain_get(libxl__gc *gc, uint32_t domid, rc = xc_sched_credit_domain_get(CTX->xch, domid, &sdom); if (rc != 0) { - LOGE(ERROR, "getting domain sched credit"); + LOGE(ERROR, "Domain %"PRIu32": getting domain sched credit", domid); return ERROR_FAIL; } @@ -5188,7 +5212,7 @@ static int sched_credit_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_domain_getinfolist(CTX->xch, domid, 1, &domaininfo); if (rc < 0) { - LOGE(ERROR, "getting domain info list"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info list", domid); return ERROR_FAIL; } if (rc != 1 || domaininfo.domain != domid) @@ -5196,14 +5220,14 @@ static int sched_credit_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_sched_credit_domain_get(CTX->xch, domid, &sdom); if (rc != 0) { - LOGE(ERROR, "getting domain sched credit"); + LOGE(ERROR, "Domain %"PRIu32": getting domain sched credit", domid); return ERROR_FAIL; } if (scinfo->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT) { if (scinfo->weight < 1 || scinfo->weight > 65535) { - LOG(ERROR, "Cpu weight out of range, " - "valid values are within range from 1 to 65535"); + LOG(ERROR, "Domain %"PRIu32": Cpu weight out of range, " + "valid values are within range from 1 to 65535", domid); return ERROR_INVAL; } sdom.weight = scinfo->weight; @@ -5212,9 +5236,9 @@ static int sched_credit_domain_set(libxl__gc *gc, uint32_t domid, if (scinfo->cap != LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT) { if (scinfo->cap < 0 || scinfo->cap > (domaininfo.max_vcpu_id + 1) * 100) { - LOG(ERROR, "Cpu cap out of range, " + LOG(ERROR, "Domain %"PRIu32": Cpu cap out of range, " "valid range is from 0 to %d for specified number of vcpus", - ((domaininfo.max_vcpu_id + 1) * 100)); + domid, ((domaininfo.max_vcpu_id + 1) * 100)); return ERROR_INVAL; } sdom.cap = scinfo->cap; @@ -5222,7 +5246,7 @@ static int sched_credit_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_sched_credit_domain_set(CTX->xch, domid, &sdom); if ( rc < 0 ) { - LOGE(ERROR, "setting domain sched credit"); + LOGE(ERROR, "Domain %"PRIu32": setting domain sched credit", domid); return ERROR_FAIL; } @@ -5302,7 +5326,7 @@ static int sched_credit2_domain_get(libxl__gc *gc, uint32_t domid, rc = xc_sched_credit2_domain_get(CTX->xch, domid, &sdom); if (rc != 0) { - LOGE(ERROR, "getting domain sched credit2"); + LOGE(ERROR, "Domain %"PRIu32": getting domain sched credit2", domid); return ERROR_FAIL; } @@ -5321,14 +5345,14 @@ static int sched_credit2_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_sched_credit2_domain_get(CTX->xch, domid, &sdom); if (rc != 0) { - LOGE(ERROR, "getting domain sched credit2"); + LOGE(ERROR, "Domain %"PRIu32": getting domain sched credit2", domid); return ERROR_FAIL; } if (scinfo->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT) { if (scinfo->weight < 1 || scinfo->weight > 65535) { - LOG(ERROR, "Cpu weight out of range, " - "valid values are within range from 1 to 65535"); + LOG(ERROR, "Domain %"PRIu32": Cpu weight out of range, " + "valid values are within range from 1 to 65535", domid); return ERROR_INVAL; } sdom.weight = scinfo->weight; @@ -5336,7 +5360,7 @@ static int sched_credit2_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_sched_credit2_domain_set(CTX->xch, domid, &sdom); if ( rc < 0 ) { - LOGE(ERROR, "setting domain sched credit2"); + LOGE(ERROR, "Domain %"PRIu32": setting domain sched credit2", domid); return ERROR_FAIL; } @@ -5381,7 +5405,7 @@ static int sched_rtds_vcpu_get(libxl__gc *gc, uint32_t domid, r = xc_domain_getinfo(CTX->xch, domid, 1, &info); if (r < 0) { - LOGE(ERROR, "getting domain info"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info", domid); rc = ERROR_FAIL; goto out; } @@ -5395,9 +5419,9 @@ static int sched_rtds_vcpu_get(libxl__gc *gc, uint32_t domid, for (i = 0; i < num_vcpus; i++) { if (scinfo->vcpus[i].vcpuid < 0 || scinfo->vcpus[i].vcpuid > info.max_vcpu_id) { - LOG(ERROR, "VCPU index is out of range, " + LOG(ERROR, "Domain %"PRIu32": VCPU index is out of range, " "valid values are within range from 0 to %d", - info.max_vcpu_id); + domid, info.max_vcpu_id); rc = ERROR_INVAL; goto out; } @@ -5407,7 +5431,7 @@ static int sched_rtds_vcpu_get(libxl__gc *gc, uint32_t domid, r = xc_sched_rtds_vcpu_get(CTX->xch, domid, vcpus, num_vcpus); if (r != 0) { - LOGE(ERROR, "getting vcpu sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": getting vcpu sched rtds", domid); rc = ERROR_FAIL; goto out; } @@ -5433,7 +5457,7 @@ static int sched_rtds_vcpu_get_all(libxl__gc *gc, uint32_t domid, r = xc_domain_getinfo(CTX->xch, domid, 1, &info); if (r < 0) { - LOGE(ERROR, "getting domain info"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info", domid); rc = ERROR_FAIL; goto out; } @@ -5450,7 +5474,7 @@ static int sched_rtds_vcpu_get_all(libxl__gc *gc, uint32_t domid, r = xc_sched_rtds_vcpu_get(CTX->xch, domid, vcpus, num_vcpus); if (r != 0) { - LOGE(ERROR, "getting vcpu sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": getting vcpu sched rtds", domid); rc = ERROR_FAIL; goto out; } @@ -5481,7 +5505,7 @@ static int sched_rtds_vcpu_set(libxl__gc *gc, uint32_t domid, r = xc_domain_getinfo(CTX->xch, domid, 1, &info); if (r < 0) { - LOGE(ERROR, "getting domain info"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info", domid); rc = ERROR_FAIL; goto out; } @@ -5494,8 +5518,8 @@ static int sched_rtds_vcpu_set(libxl__gc *gc, uint32_t domid, for (i = 0; i < scinfo->num_vcpus; i++) { if (scinfo->vcpus[i].vcpuid < 0 || scinfo->vcpus[i].vcpuid > max_vcpuid) { - LOG(ERROR, "Invalid VCPU %d: valid range is [0, %d]", - scinfo->vcpus[i].vcpuid, max_vcpuid); + LOG(ERROR, "Domain %"PRIu32": Invalid VCPU %d: valid range is [0, %d]", + domid, scinfo->vcpus[i].vcpuid, max_vcpuid); rc = ERROR_INVAL; goto out; } @@ -5516,7 +5540,7 @@ static int sched_rtds_vcpu_set(libxl__gc *gc, uint32_t domid, r = xc_sched_rtds_vcpu_set(CTX->xch, domid, vcpus, scinfo->num_vcpus); if (r != 0) { - LOGE(ERROR, "setting vcpu sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": setting vcpu sched rtds", domid); rc = ERROR_FAIL; goto out; } @@ -5538,7 +5562,7 @@ static int sched_rtds_vcpu_set_all(libxl__gc *gc, uint32_t domid, r = xc_domain_getinfo(CTX->xch, domid, 1, &info); if (r < 0) { - LOGE(ERROR, "getting domain info"); + LOGE(ERROR, "Domain %"PRIu32": getting domain info", domid); rc = ERROR_FAIL; goto out; } @@ -5564,7 +5588,7 @@ static int sched_rtds_vcpu_set_all(libxl__gc *gc, uint32_t domid, r = xc_sched_rtds_vcpu_set(CTX->xch, domid, vcpus, num_vcpus); if (r != 0) { - LOGE(ERROR, "setting vcpu sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": setting vcpu sched rtds", domid); rc = ERROR_FAIL; goto out; } @@ -5581,7 +5605,7 @@ static int sched_rtds_domain_get(libxl__gc *gc, uint32_t domid, rc = xc_sched_rtds_domain_get(CTX->xch, domid, &sdom); if (rc != 0) { - LOGE(ERROR, "getting domain sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": getting domain sched rtds", domid); return ERROR_FAIL; } @@ -5602,7 +5626,7 @@ static int sched_rtds_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_sched_rtds_domain_get(CTX->xch, domid, &sdom); if (rc != 0) { - LOGE(ERROR, "getting domain sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": getting domain sched rtds", domid); return ERROR_FAIL; } if (scinfo->period != LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT) @@ -5614,7 +5638,7 @@ static int sched_rtds_domain_set(libxl__gc *gc, uint32_t domid, rc = xc_sched_rtds_domain_set(CTX->xch, domid, &sdom); if (rc < 0) { - LOGE(ERROR, "setting domain sched rtds"); + LOGE(ERROR, "Domain %"PRIu32": setting domain sched rtds", domid); return ERROR_FAIL; } @@ -5633,7 +5657,7 @@ int libxl_domain_sched_params_set(libxl_ctx *ctx, uint32_t domid, switch (sched) { case LIBXL_SCHEDULER_SEDF: - LOG(ERROR, "SEDF scheduler no longer available"); + LOG(ERROR, "Domain %"PRIu32": SEDF scheduler no longer available", domid); ret=ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: @@ -5649,7 +5673,7 @@ int libxl_domain_sched_params_set(libxl_ctx *ctx, uint32_t domid, ret=sched_rtds_domain_set(gc, domid, scinfo); break; default: - LOG(ERROR, "Unknown scheduler"); + LOG(ERROR, "Domain %"PRIu32": Unknown scheduler", domid); ret=ERROR_INVAL; break; } @@ -5670,20 +5694,21 @@ int libxl_vcpu_sched_params_set(libxl_ctx *ctx, uint32_t domid, switch (sched) { case LIBXL_SCHEDULER_SEDF: - LOG(ERROR, "SEDF scheduler no longer available"); + LOG(ERROR, "Domain %"PRIu32": SEDF scheduler no longer available", domid); rc = ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: case LIBXL_SCHEDULER_CREDIT2: case LIBXL_SCHEDULER_ARINC653: - LOG(ERROR, "per-VCPU parameter setting not supported for this scheduler"); + LOG(ERROR, "Domain %"PRIu32": per-VCPU parameter setting not supported for this scheduler", + domid); rc = ERROR_INVAL; break; case LIBXL_SCHEDULER_RTDS: rc = sched_rtds_vcpu_set(gc, domid, scinfo); break; default: - LOG(ERROR, "Unknown scheduler"); + LOG(ERROR, "Domain %"PRIu32": Unknown scheduler", domid); rc = ERROR_INVAL; break; } @@ -5704,20 +5729,21 @@ int libxl_vcpu_sched_params_set_all(libxl_ctx *ctx, uint32_t domid, switch (sched) { case LIBXL_SCHEDULER_SEDF: - LOG(ERROR, "SEDF scheduler no longer available"); + LOG(ERROR, "Domain %"PRIu32": SEDF scheduler no longer available", domid); rc = ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: case LIBXL_SCHEDULER_CREDIT2: case LIBXL_SCHEDULER_ARINC653: - LOG(ERROR, "per-VCPU parameter setting not supported for this scheduler"); + LOG(ERROR, "Domain %"PRIu32": per-VCPU parameter setting not supported for this scheduler", + domid); rc = ERROR_INVAL; break; case LIBXL_SCHEDULER_RTDS: rc = sched_rtds_vcpu_set_all(gc, domid, scinfo); break; default: - LOG(ERROR, "Unknown scheduler"); + LOG(ERROR, "Domain %"PRIu32": Unknown scheduler", domid); rc = ERROR_INVAL; break; } @@ -5738,7 +5764,7 @@ int libxl_domain_sched_params_get(libxl_ctx *ctx, uint32_t domid, switch (scinfo->sched) { case LIBXL_SCHEDULER_SEDF: - LOG(ERROR, "SEDF scheduler no longer available"); + LOG(ERROR, "Domain %"PRIu32": SEDF scheduler no longer available", domid); ret=ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: @@ -5751,7 +5777,7 @@ int libxl_domain_sched_params_get(libxl_ctx *ctx, uint32_t domid, ret=sched_rtds_domain_get(gc, domid, scinfo); break; default: - LOG(ERROR, "Unknown scheduler"); + LOG(ERROR, "Domain %"PRIu32": Unknown scheduler", domid); ret=ERROR_INVAL; break; } @@ -5770,20 +5796,21 @@ int libxl_vcpu_sched_params_get(libxl_ctx *ctx, uint32_t domid, switch (scinfo->sched) { case LIBXL_SCHEDULER_SEDF: - LOG(ERROR, "SEDF scheduler is no longer available"); + LOG(ERROR, "Domain %"PRIu32": SEDF scheduler is no longer available", domid); rc = ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: case LIBXL_SCHEDULER_CREDIT2: case LIBXL_SCHEDULER_ARINC653: - LOG(ERROR, "per-VCPU parameter getting not supported for this scheduler"); + LOG(ERROR, "Domain %"PRIu32": per-VCPU parameter getting not supported for this scheduler", + domid); rc = ERROR_INVAL; break; case LIBXL_SCHEDULER_RTDS: rc = sched_rtds_vcpu_get(gc, domid, scinfo); break; default: - LOG(ERROR, "Unknown scheduler"); + LOG(ERROR, "Domain %"PRIu32": Unknown scheduler", domid); rc = ERROR_INVAL; break; } @@ -5802,20 +5829,20 @@ int libxl_vcpu_sched_params_get_all(libxl_ctx *ctx, uint32_t domid, switch (scinfo->sched) { case LIBXL_SCHEDULER_SEDF: - LOG(ERROR, "SEDF scheduler is no longer available"); + LOG(ERROR, "Domain %"PRIu32": SEDF scheduler is no longer available", domid); rc = ERROR_FEATURE_REMOVED; break; case LIBXL_SCHEDULER_CREDIT: case LIBXL_SCHEDULER_CREDIT2: case LIBXL_SCHEDULER_ARINC653: - LOG(ERROR, "per-VCPU parameter getting not supported for this scheduler"); + LOG(ERROR, "Domain %"PRIu32": per-VCPU parameter getting not supported for this scheduler", domid); rc = ERROR_INVAL; break; case LIBXL_SCHEDULER_RTDS: rc = sched_rtds_vcpu_get_all(gc, domid, scinfo); break; default: - LOG(ERROR, "Unknown scheduler"); + LOG(ERROR, "Domain %"PRIu32": Unknown scheduler", domid); rc = ERROR_INVAL; break; } @@ -5887,8 +5914,8 @@ int libxl_send_trigger(libxl_ctx *ctx, uint32_t domid, } if (rc != 0) { - LOGE(ERROR, "Send trigger '%s' failed", - libxl_trigger_to_string(trigger)); + LOGE(ERROR, "Domain %"PRIu32": Send trigger '%s' failed", + domid, libxl_trigger_to_string(trigger)); rc = ERROR_FAIL; } @@ -5996,7 +6023,7 @@ uint32_t libxl_vm_get_start_time(libxl_ctx *ctx, uint32_t domid) start_time = libxl__xs_read( gc, XBT_NULL, GCSPRINTF("%s/start_time", vm_path)); if (start_time == NULL) { - LOGEV(ERROR, -1, "Can't get start time of domain '%d'", domid); + LOGEV(ERROR, -1, "Domain %"PRIu32": Can't get start time of domain", domid); ret = -1; }else{ ret = strtoul(start_time, NULL, 10); @@ -6014,7 +6041,7 @@ char *libxl_tmem_list(libxl_ctx *ctx, uint32_t domid, int use_long) r = xc_tmem_control(ctx->xch, -1, XEN_SYSCTL_TMEM_OP_LIST, domid, 32768, use_long, _buf); if (r < 0) { - LOGE(ERROR, "Can not get tmem list"); + LOGE(ERROR, "Domain %"PRIu32": Can not get tmem list", domid); GC_FREE; return NULL; } @@ -6031,7 +6058,7 @@ int libxl_tmem_freeze(libxl_ctx *ctx, uint32_t domid) r = xc_tmem_control(ctx->xch, -1, XEN_SYSCTL_TMEM_OP_FREEZE, domid, 0, 0, NULL); if (r < 0) { - LOGE(ERROR, "Can not freeze tmem pools"); + LOGE(ERROR, "Domain %"PRIu32": Can not freeze tmem pools", domid); rc = ERROR_FAIL; goto out; } @@ -6050,7 +6077,7 @@ int libxl_tmem_thaw(libxl_ctx *ctx, uint32_t domid) r = xc_tmem_control(ctx->xch, -1, XEN_SYSCTL_TMEM_OP_THAW, domid, 0, 0, NULL); if (r < 0) { - LOGE(ERROR, "Can not thaw tmem pools"); + LOGE(ERROR, "Domain %"PRIu32": Can not thaw tmem pools", domid); rc = ERROR_FAIL; goto out; } @@ -6080,13 +6107,14 @@ int libxl_tmem_set(libxl_ctx *ctx, uint32_t domid, char* name, uint32_t set) GC_INIT(ctx); if (subop == -1) { - LOGEV(ERROR, -1, "Invalid set, valid sets are "); + LOGEV(ERROR, -1, "Domain %"PRIu32": Invalid set, valid sets are ", + domid); rc = ERROR_INVAL; goto out; } r = xc_tmem_control(ctx->xch, -1, subop, domid, set, 0, NULL); if (r < 0) { - LOGE(ERROR, "Can not set tmem %s", name); + LOGE(ERROR, "Domain %"PRIu32": Can not set tmem %s", domid, name); rc = ERROR_FAIL; goto out; } @@ -6105,7 +6133,7 @@ int libxl_tmem_shared_auth(libxl_ctx *ctx, uint32_t domid, r = xc_tmem_auth(ctx->xch, domid, uuid, auth); if (r < 0) { - LOGE(ERROR, "Can not set tmem shared auth"); + LOGE(ERROR, "Domain %"PRIu32": Can not set tmem shared auth", domid); rc = ERROR_FAIL; goto out; } @@ -6450,7 +6478,8 @@ int libxl_cpupool_movedomain(libxl_ctx *ctx, uint32_t poolid, uint32_t domid) rc = xc_cpupool_movedomain(ctx->xch, poolid, domid); if (rc) { - LOGEV(ERROR, rc, "Error moving domain to cpupool"); + LOGEV(ERROR, rc, "Domain %"PRIu32": Error moving domain to cpupool", + domid); GC_FREE; return ERROR_FAIL; } @@ -6578,7 +6607,7 @@ static int libxl__update_avail_vcpus_qmp(libxl__gc *gc, uint32_t domid, rc = libxl__qmp_query_cpus(gc, domid, map); if (rc) { - LOG(ERROR, "fail to get number of cpus for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": fail to get number of cpus", domid); goto out; } @@ -6632,7 +6661,7 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, rc = libxl__get_domain_configuration(gc, domid, d_config); if (rc) { - LOG(ERROR, "fail to get domain configuration for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": fail to get domain configuration", domid); rc = ERROR_FAIL; goto out; } @@ -6642,7 +6671,7 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, char *domname; domname = libxl_domid_to_name(ctx, domid); if (!domname) { - LOG(ERROR, "fail to get domain name for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": fail to get domain name", domid); goto out; } free(d_config->c_info.name); @@ -6655,7 +6684,7 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, libxl_dominfo_init(&info); rc = libxl_domain_info(ctx, &info, domid); if (rc) { - LOG(ERROR, "fail to get domain info for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": fail to get domain info", domid); libxl_dominfo_dispose(&info); goto out; } @@ -6701,7 +6730,7 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, } if (rc) { - LOG(ERROR, "fail to update available cpu map for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": fail to update available cpu map", domid); goto out; } } @@ -6723,7 +6752,7 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, /* "target" */ rc = libxl__get_memory_target(gc, domid, &target_memkb, &max_memkb); if (rc) { - LOG(ERROR, "fail to get memory target for domain %d", domid); + LOG(ERROR, "Domain %"PRIu32": fail to get memory target", domid); goto out; } @@ -6774,8 +6803,8 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, num_dev = libxl__device_type_get_num(dt, d_config); p = dt->list(CTX, domid, &num); if (p == NULL) { - LOG(DEBUG, "no %s from xenstore for domain %d", - dt->type, domid); + LOG(DEBUG, "Domain %"PRIu32": no %s from xenstore", + domid, dt->type); } devs = libxl__device_type_get_ptr(dt, d_config); @@ -6793,7 +6822,8 @@ int libxl_retrieve_domain_configuration(libxl_ctx *ctx, uint32_t domid, dt->merge(ctx, p + dt->dev_elem_size * j, q); } else { /* not found in xenstore */ LOG(WARN, - "Device present in JSON but not in xenstore, ignored"); + "Domain %"PRIu32": Device present in JSON but not in xenstore, ignored", + domid); dt->dispose(q); -- 2.10.0