From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [Patch] support cpupool for xl create Date: Tue, 11 May 2010 07:47:59 +0200 Message-ID: <4BE8EF8F.2080802@ts.fujitsu.com> References: <4BE3CBCA.7080104@ts.fujitsu.com> <4BE48CC7.3050101@goop.org> <4BE7A22C.8020100@ts.fujitsu.com> <4BE7AAF2.50906@goop.org> <4BE7AE9F.2090900@ts.fujitsu.com> <4BE8678C.2060801@goop.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060308050206050909020804" Return-path: In-Reply-To: <4BE8678C.2060801@goop.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jeremy Fitzhardinge Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------060308050206050909020804 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 05/10/2010 10:07 PM, Jeremy Fitzhardinge wrote: > On 05/09/2010 11:58 PM, Juergen Gross wrote: >> On 05/10/2010 08:42 AM, Jeremy Fitzhardinge wrote: >>> On 05/09/2010 11:05 PM, Juergen Gross wrote: >>>>> diff -r bbf009817ffb tools/libxl/libxl.c >>>>> --- a/tools/libxl/libxl.c Fri May 07 19:22:28 2010 +0100 >>>>> +++ b/tools/libxl/libxl.c Fri May 07 14:57:00 2010 -0700 >>>>> @@ -169,7 +169,8 @@ >>>>> >>>>> xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/uuid", vm_path), >>>>> uuid_string, strlen(uuid_string)); >>>>> xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/name", vm_path), >>>>> info->name, strlen(info->name)); >>>>> - xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/pool_name", >>>>> vm_path), info->poolname, strlen(info->poolname)); >>>>> + if (info->poolname) >>>>> + xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/pool_name", >>>>> vm_path), info->poolname, strlen(info->poolname)); >>>>> >>>>> libxl_xs_writev(ctx, t, dom_path, info->xsdata); >>>>> libxl_xs_writev(ctx, t, libxl_sprintf(ctx, "%s/platform", >>>>> dom_path), info->platformdata); >>>>> >>>>> fixes it for me. >>>> >>>> >>>> You seem to have specified a not existing cpupool. >>>> The solution should not be to ignore this, but to do a proper test >>>> on the >>>> pool parameter. >>>> Attached patch does this. >>> >>> I'm not using cpupools. My config makes no mention of "pool" at all. >> >> Strange. >> I tested this case and it worked for me. > > Perhaps one thing that you're not testing: I'm using oxenstored, and I'm > xl without ever having started xend, so xenstore starts out completely > empty. I don't know if that makes a difference. It does :-) Without proper xenstore entries it is impossible to get a cpupool name from it's id. Id 0 is hard wired to "Pool-0", so this case can be handled even without xenstore. I modified the patch accordingly. Juergen -- Juergen Gross Principal Developer Operating Systems TSP ES&S SWE OS6 Telephone: +49 (0) 89 3222 2967 Fujitsu Technology Solutions e-mail: juergen.gross@ts.fujitsu.com Domagkstr. 28 Internet: ts.fujitsu.com D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html --------------060308050206050909020804 Content-Type: text/x-patch; name="libxl-poolerr.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="libxl-poolerr.patch" diff -r bbf009817ffb tools/libxl/libxl.c --- a/tools/libxl/libxl.c Fri May 07 19:22:28 2010 +0100 +++ b/tools/libxl/libxl.c Tue May 11 07:45:01 2010 +0200 @@ -169,7 +169,8 @@ retry_transaction: xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/uuid", vm_path), uuid_string, strlen(uuid_string)); xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/name", vm_path), info->name, strlen(info->name)); - xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/pool_name", vm_path), info->poolname, strlen(info->poolname)); + if (info->poolname) + xs_write(ctx->xsh, t, libxl_sprintf(ctx, "%s/pool_name", vm_path), info->poolname, strlen(info->poolname)); libxl_xs_writev(ctx, t, dom_path, info->xsdata); libxl_xs_writev(ctx, t, libxl_sprintf(ctx, "%s/platform", dom_path), info->platformdata); diff -r bbf009817ffb tools/libxl/libxl_utils.c --- a/tools/libxl/libxl_utils.c Fri May 07 19:22:28 2010 +0100 +++ b/tools/libxl/libxl_utils.c Tue May 11 07:45:01 2010 +0200 @@ -84,6 +84,8 @@ char *libxl_poolid_to_name(struct libxl_ char path[strlen("/local/pool") + 12]; char *s; + if (poolid == 0) + return "Pool-0"; snprintf(path, sizeof(path), "/local/pool/%d/name", poolid); s = xs_read(ctx->xsh, XBT_NULL, path, &len); libxl_ptr_add(ctx, s); diff -r bbf009817ffb tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Fri May 07 19:22:28 2010 +0100 +++ b/tools/libxl/xl_cmdimpl.c Tue May 11 07:45:01 2010 +0200 @@ -453,9 +453,15 @@ static void parse_config_data(const char if (!xlu_cfg_get_long(config, "oos", &l)) c_info->oos = l; - if (!xlu_cfg_get_string (config, "pool", &buf)) + if (!xlu_cfg_get_string (config, "pool", &buf)) { + c_info->poolid = -1; pool_qualifier_to_poolid(buf, &c_info->poolid, NULL); + } c_info->poolname = libxl_poolid_to_name(&ctx, c_info->poolid); + if (!c_info->poolname) { + fprintf(stderr, "Illegal pool specified\n"); + exit(1); + } init_build_info(b_info, c_info); --------------060308050206050909020804 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------060308050206050909020804--