[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl: introduce libxl_userdata_unlink
commit 12ebbe2bae28c0e170e76f61ade65b980ae36b55 Author: Wei Liu <wei.liu2@xxxxxxxxxx> AuthorDate: Tue Sep 16 11:01:16 2014 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Wed Sep 17 20:00:00 2014 +0100 libxl: introduce libxl_userdata_unlink This will be used in later patch for xl to remove its "xl" userdata file. Both CTX lock and userdata lock are taken in this API. CTX lock is taken to maintain locking hierarchy, but it also has a side effect to protect against R-M-W by other threads. Userdata lock is used to protect against domain destruction. In general application should not rely on these internal locks to protect its own userdata files. It should deploys its own lock if it cares. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxl/libxl.h | 10 ++++++++++ tools/libxl/libxl_dom.c | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 0 deletions(-) diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 3bee659..bc68cac 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -67,6 +67,13 @@ * the same $(XEN_VERSION) (e.g. throughout a major release). */ +/* LIBXL_HAVE_USERDATA_UNLINK + * + * If it is defined, libxl has a library function called + * libxl_userdata_unlink. + */ +#define LIBXL_HAVE_USERDATA_UNLINK 1 + /* LIBXL_HAVE_CPUPOOL_QUALIFIER_TO_CPUPOOLID * * If this is defined, libxl has a library function called @@ -1268,6 +1275,9 @@ int libxl_userdata_retrieve(libxl_ctx *ctx, uint32_t domid, * data_r and datalen_r may be 0. * On error return, *data_r and *datalen_r are undefined. */ +int libxl_userdata_unlink(libxl_ctx *ctx, uint32_t domid, + const char *userdata_userid); + int libxl_get_physinfo(libxl_ctx *ctx, libxl_physinfo *physinfo); int libxl_set_vcpuaffinity(libxl_ctx *ctx, uint32_t domid, uint32_t vcpuid, diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 02384ac..ce0c4ac 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -2016,6 +2016,32 @@ out: return rc; } +int libxl_userdata_unlink(libxl_ctx *ctx, uint32_t domid, + const char *userdata_userid) +{ + GC_INIT(ctx); + int rc; + + libxl__domain_userdata_lock *lock; + const char *filename; + + CTX_LOCK; + lock = libxl__lock_domain_userdata(gc, domid); + if (!lock) { + rc = ERROR_LOCK_FAIL; + goto out; + } + + filename = libxl__userdata_path(gc, domid, userdata_userid, "d"); + if (unlink(filename)) rc = ERROR_FAIL; + + libxl__unlock_domain_userdata(lock); +out: + CTX_UNLOCK; + GC_FREE; + return rc; +} + /* * Local variables: * mode: C -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |