From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH V4 21/24] xl: update domain configuration when running mem-set and mem-max Date: Thu, 1 May 2014 13:58:18 +0100 Message-ID: <1398949101-23320-22-git-send-email-wei.liu2@citrix.com> References: <1398949101-23320-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1398949101-23320-1-git-send-email-wei.liu2@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.xen.org Cc: Wei Liu , ian.jackson@eu.citrix.com, ian.campbell@citrix.com List-Id: xen-devel@lists.xenproject.org Signed-off-by: Wei Liu --- tools/libxl/xl_cmdimpl.c | 55 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index f891ab5..83f058e 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -2745,6 +2745,7 @@ int main_memmax(int argc, char **argv) int opt = 0; char *mem; int rc; + libxl_domain_config d_config; SWITCH_FOREACH_OPT(opt, "", NULL, "mem-max", 2) { /* No options */ @@ -2756,10 +2757,34 @@ int main_memmax(int argc, char **argv) rc = set_memory_max(domid, mem); if (rc) { fprintf(stderr, "cannot set domid %d static max memory to : %s\n", domid, mem); - return 1; + rc = 1; + goto out; } - return 0; + libxl_domain_config_init(&d_config); + if (load_domain_config(domid, &d_config)) { + fprintf(stderr, "cannot load domain configuration from userdata store, " + "not updating configuration\n"); + rc = 1; + goto out_dispose; + } + + /* parse_mem_size_kb cannot fail, otherwise we won't be here. */ + d_config.b_info.max_memkb = parse_mem_size_kb(mem); + + if (store_domain_config(domid, &d_config)) { + fprintf(stderr, "cannot store domain configuration from userdata store, " + "not updating configuration\n"); + rc = 1; + goto out_dispose; + } + + rc = 0; + +out_dispose: + libxl_domain_config_dispose(&d_config); +out: + return rc; } static void set_memory_target(uint32_t domid, const char *mem) @@ -2780,6 +2805,8 @@ int main_memset(int argc, char **argv) uint32_t domid; int opt = 0; const char *mem; + libxl_domain_config d_config; + int rc = 1; SWITCH_FOREACH_OPT(opt, "", NULL, "mem-set", 2) { /* No options */ @@ -2789,7 +2816,29 @@ int main_memset(int argc, char **argv) mem = argv[optind + 1]; set_memory_target(domid, mem); - return 0; + + libxl_domain_config_init(&d_config); + if (load_domain_config(domid, &d_config)) { + fprintf(stderr, "cannot load domain configuration from userdata store, " + "not updating configuration\n"); + rc = 1; + goto out; + } + + /* parse_mem_size_kb cannot fail, otherwise we won't be here. */ + d_config.b_info.target_memkb = parse_mem_size_kb(mem); + + if (store_domain_config(domid, &d_config)) { + fprintf(stderr, "cannot store domain configuration from userdata store, " + "not updating configuration\n"); + rc = 1; + goto out; + } + + rc = 0; +out: + libxl_domain_config_dispose(&d_config); + return rc; } static int cd_insert(uint32_t domid, const char *virtdev, char *phys) -- 1.7.10.4