From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 10/28] libxl: kill_device_model: Silently tolerate ENOENT on pid xs path Date: Tue, 22 Dec 2015 18:44:45 +0000 Message-ID: <1450809903-3393-11-git-send-email-ian.jackson@eu.citrix.com> References: <1450809903-3393-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1450809903-3393-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: Ian Jackson , Wei Liu , Ian Campbell , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org If the pid is absent in xenstore, this means there is no such DM. Do not complain about this, then. This allows us to simplify call sites. Do so for libxl__destroy_domid. Signed-off-by: Ian Jackson --- v6: New patch. --- tools/libxl/libxl.c | 4 +--- tools/libxl/libxl_dm.c | 7 ++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 5414649..2a0c092 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1606,7 +1606,6 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) libxl_ctx *ctx = CTX; uint32_t domid = dis->domid; char *dom_path; - char *pid; int rc, dm_present; libxl__ev_child_init(&dis->destroyer); @@ -1642,8 +1641,7 @@ void libxl__destroy_domid(libxl__egc *egc, libxl__destroy_domid_state *dis) } /* fall through */ case LIBXL_DOMAIN_TYPE_PV: - pid = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("/local/domain/%d/image/device-model-pid", domid)); - dm_present = (pid != NULL); + dm_present = 1; break; case LIBXL_DOMAIN_TYPE_INVALID: rc = ERROR_FAIL; diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index b85b377..593f3e6 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -2053,11 +2053,16 @@ static int kill_device_model(libxl__gc *gc, const char *xs_path_pid) int ret, pid; ret = libxl__xs_read_checked(gc, XBT_NULL, xs_path_pid, &xs_pid); - if (ret || !xs_pid) { + if (ret) { LOG(ERROR, "unable to find device model pid in %s", xs_path_pid); ret = ret ? : ERROR_FAIL; goto out; } + if (!xs_pid) { + /* Jolly good */ + ret = 0; + goto out; + } pid = atoi(xs_pid); ret = kill(pid, SIGHUP); -- 1.7.10.4