From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Yang Z" Subject: RE: [PATCH] xl create: endless loop Date: Tue, 16 Nov 2010 21:29:27 +0800 Message-ID: <749B9D3DBF0F054390025D9EAFF47F2230175138@shsmsx501.ccr.corp.intel.com> References: <201010181450.36050.Christoph.Egger@amd.com> <201011031712.48007.Christoph.Egger@amd.com> <201011101134.50776.Christoph.Egger@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Stefano Stabellini , Christoph Egger Cc: Ian, "xen-devel@lists.xensource.com" , Jackson List-Id: xen-devel@lists.xenproject.org This issue still exist in my side with latest xen unstable. Did the fixed p= atch work for you? best regards yang > -----Original Message----- > From: xen-devel-bounces@lists.xensource.com > [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Stefano > Stabellini > Sent: Wednesday, November 10, 2010 7:53 PM > To: Christoph Egger > Cc: xen-devel@lists.xensource.com; Ian Jackson; Stefano Stabellini > Subject: Re: [Xen-devel][PATCH] xl create: endless loop >=20 > On Wed, 10 Nov 2010, Christoph Egger wrote: > > On Tuesday 09 November 2010 19:08:14 Stefano Stabellini wrote: > > > On Wed, 3 Nov 2010, Christoph Egger wrote: > > > > No, this patch has no effect for me. > > > > In libxl__fill_dom0_memory_info(), the code path goes that way: > > > > > > > > t =3D xs_transaction_start(ctx->xsh); > > > > > > > > target =3D libxl__xs_read(gc, t, target_path); > > > > if (target) { <-- target contains "5" > > > > *target_memkb =3D strtoul(target, &endptr, 10); > > > > if (*endptr !=3D '\0') { <-- *endptr contains '\0' > > > > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, > > > > "invalid memory target %s from %s\n", target, > > > > target_path); > > > > rc =3D ERROR_FAIL; > > > > goto out; > > > > } > > > > rc =3D 0; > > > > goto out; <-- take this jump with rc being 0 > > > > } > > > > > > The problem you are having is that somebody in your system is setting= a > > > target for dom0 without setting freemem-slack. Are you still running > > > xend at boot? > > > > Yes, I do. >=20 > running xend alongside xl is not recommended, it could cause bugs, > especially if you don't disable autoballooning >=20 >=20 > > Xen is booted with dom0_mem. > > Dom0 has autoballooning disabled in the kernel. > > >=20 > You still need to disable autoballooning in xl, setting autoballooning > to 0 in /etc/xen/xl.conf >=20 >=20 > > > Currently libxl__fill_dom0_memory_info assumes that both values are s= et > > > initially at the same time (by libxl__fill_dom0_memory_info). > > > This patch should fix the issue, I would appreciate if you could test > > > it. > > > > > > --- > > > > > > > > > libxl: do not assume target and freemem-slack are written at the same= time > > > > > > Signed-off-by: Stefano Stabellini > > > > > > diff -r 7188d1e4b0e1 tools/libxl/libxl.c > > > --- a/tools/libxl/libxl.c Tue Nov 09 12:00:05 2010 +0000 > > > +++ b/tools/libxl/libxl.c Tue Nov 09 18:05:52 2010 +0000 > > > @@ -2779,18 +2779,25 @@ static int libxl__fill_dom0_memory_info( > > > int rc; > > > libxl_dominfo info; > > > libxl_physinfo physinfo; > > > - char *target =3D NULL, *endptr =3D NULL; > > > + char *target =3D NULL, *staticmax =3D NULL, *freememslack =3D NU= LL, > *endptr > > > =3D NULL; char *target_path =3D "/local/domain/0/memory/target"; > > > char *max_path =3D "/local/domain/0/memory/static-max"; > > > char *free_mem_slack_path =3D > "/local/domain/0/memory/freemem-slack"; > > > xs_transaction_t t; > > > libxl_ctx *ctx =3D libxl__gc_owner(gc); > > > - uint32_t free_mem_slack =3D 0; > > > + uint32_t free_mem_slack_kb =3D 0; > > > > > > retry_transaction: > > > t =3D xs_transaction_start(ctx->xsh); > > > > > > target =3D libxl__xs_read(gc, t, target_path); > > > + staticmax =3D libxl__xs_read(gc, t, target_path); > > > + freememslack =3D libxl__xs_read(gc, t, target_path); > > > + if (target && staticmax && freememslack) { > > > + rc =3D 0; > > > + goto out; > > > + } > > > > *target, *staticmax and *freememslack contain the value "5". > > So with this patch, rc always returns 0 from there. > > >=20 > that is correct: the values are there, so there is no need to write them > to xenstore again, and the caller should be able to read the target > correctly >=20 >=20 > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel