From: Ian Jackson <ian.jackson@eu.citrix.com>
To: xen-devel@lists.xen.org
Cc: Ian Campbell <ian.campbell@citrix.com>
Subject: [PATCH 15/27] libxl: add a dummy ao_how to libxl_domain_core_dump
Date: Fri, 11 May 2012 18:58:00 +0100 [thread overview]
Message-ID: <1336759092-2432-16-git-send-email-ian.jackson@eu.citrix.com> (raw)
In-Reply-To: <1336759092-2432-1-git-send-email-ian.jackson@eu.citrix.com>
From: Ian Campbell <ian.campbell@citrix.com>
Although this function is not currently slow it may become so in the
future (this also depends somewhat on the size of the guest).
Therefore arrange for it to take an ao_how which it completes
immediately. This will allow us to make it asynchronous in the future
without breaking API compatibility.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
tools/libxl/libxl.c | 18 ++++++++++++++----
tools/libxl/libxl.h | 4 +++-
tools/libxl/xl_cmdimpl.c | 4 ++--
3 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index d5fb186..482adaa 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -642,16 +642,26 @@ int libxl_domain_pause(libxl_ctx *ctx, uint32_t domid)
}
int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid,
- const char *filename)
+ const char *filename,
+ const libxl_asyncop_how *ao_how)
{
- int ret;
+ AO_CREATE(ctx, domid, ao_how);
+ int ret, rc;
+
ret = xc_domain_dumpcore(ctx->xch, domid, filename);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "core dumping domain %d to %s",
domid, filename);
- return ERROR_FAIL;
+ rc = ERROR_FAIL;
+ goto out;
}
- return 0;
+
+ rc = 0;
+out:
+
+ libxl__ao_complete(egc, ao, rc);
+
+ return AO_INPROGRESS;
}
int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid)
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 3087146..d8dbb1e 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -511,7 +511,9 @@ int libxl_domain_rename(libxl_ctx *ctx, uint32_t domid,
int libxl_domain_pause(libxl_ctx *ctx, uint32_t domid);
int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid);
-int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid, const char *filename);
+int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid,
+ const char *filename,
+ const libxl_asyncop_how *ao_how);
int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint32_t target_memkb);
int libxl_set_memory_target(libxl_ctx *ctx, uint32_t domid, int32_t target_memkb, int relative, int enforce);
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index c1cab9e..45e2c30 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1306,7 +1306,7 @@ static int handle_domain_death(libxl_ctx *ctx, uint32_t domid,
LOG("failed to construct core dump path");
} else {
LOG("dumping core to %s", corefile);
- rc=libxl_domain_core_dump(ctx, domid, corefile);
+ rc=libxl_domain_core_dump(ctx, domid, corefile, NULL);
if (rc) LOG("core dump failed (rc=%d).", rc);
}
/* No point crying over spilled milk, continue on failure. */
@@ -2927,7 +2927,7 @@ static void core_dump_domain(const char *domain_spec, const char *filename)
{
int rc;
find_domain(domain_spec);
- rc=libxl_domain_core_dump(ctx, domid, filename);
+ rc=libxl_domain_core_dump(ctx, domid, filename, NULL);
if (rc) { fprintf(stderr,"core dump failed (rc=%d)\n",rc);exit(-1); }
}
--
1.7.2.5
next prev parent reply other threads:[~2012-05-11 17:58 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-11 17:57 [PATCH v9 00/27] libxl: child process handling Ian Jackson
2012-05-11 17:57 ` [PATCH 01/27] libxl: handle POLLERR, POLLHUP, POLLNVAL properly Ian Jackson
2012-05-11 17:57 ` [PATCH 02/27] libxl: support multiple libxl__ev_fds for the same fd Ian Jackson
2012-05-11 17:57 ` [PATCH 03/27] libxl: event API: new facilities for waiting for subprocesses Ian Jackson
2012-05-11 17:57 ` [PATCH 04/27] autoconf: trim the configure script; use autoheader Ian Jackson
2012-05-11 17:57 ` [PATCH 05/27] autoconf: New test for openpty et al Ian Jackson
2012-05-11 17:57 ` [PATCH 06/27] libxl: provide libxl__remove_file " Ian Jackson
2012-05-11 17:57 ` [PATCH 07/27] libxl: Introduce libxl__sendmsg_fds and libxl__recvmsg_fds Ian Jackson
2012-05-11 17:57 ` [PATCH 08/27] libxl: Clean up setdefault in do_domain_create Ian Jackson
2012-05-11 17:57 ` [PATCH 09/27] libxl: provide libxl__datacopier_* Ian Jackson
2012-05-11 17:57 ` [PATCH 10/27] libxl: provide libxl__openpty_* Ian Jackson
2012-05-11 17:57 ` [PATCH 11/27] libxl: ao: Convert libxl_run_bootloader Ian Jackson
2012-05-11 17:57 ` [PATCH 12/27] libxl: make libxl_create_logfile const-correct Ian Jackson
2012-05-11 17:57 ` [PATCH 13/27] libxl: log bootloader output Ian Jackson
2012-05-11 17:57 ` [PATCH 14/27] libxl: Allow AO_GC and EGC_GC even if not used Ian Jackson
2012-05-11 17:58 ` Ian Jackson [this message]
2012-05-11 17:58 ` [PATCH 16/27] libxl: remove ctx->waitpid_instead Ian Jackson
2012-05-11 17:58 ` [PATCH 17/27] libxl: change some structures to unit arrays Ian Jackson
2012-05-11 17:58 ` [PATCH 18/27] libxl: ao: convert libxl__spawn_* Ian Jackson
2012-05-11 17:58 ` [PATCH 19/27] libxl: set guest_domid even if libxl__domain_make fails Ian Jackson
2012-05-11 17:58 ` [PATCH 20/27] libxl: make libxl_create run bootloader via callback Ian Jackson
2012-05-11 17:58 ` [PATCH 21/27] libxl: Fix an ao completion bug; document locking policy Ian Jackson
2012-05-11 17:58 ` [PATCH 22/27] libxl: provide progress reporting for long-running operations Ian Jackson
2012-05-11 17:58 ` [PATCH 23/27] libxl: remove malloc failure handling from NEW_EVENT Ian Jackson
2012-05-11 17:58 ` [PATCH 24/27] libxl: convert console callback to libxl_asyncprogress_how Ian Jackson
2012-05-11 17:58 ` [PATCH 25/27] libxl: clarify definition of "slow" operation Ian Jackson
2012-05-11 17:58 ` [PATCH 26/27] libxl: child processes cleanups Ian Jackson
2012-05-11 17:58 ` [PATCH 27/27] libxl: abort bootloader invocation when domain dies Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1336759092-2432-16-git-send-email-ian.jackson@eu.citrix.com \
--to=ian.jackson@eu.citrix.com \
--cc=ian.campbell@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).