[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] libxl_set_memory_target: retain the same maxmem offset on top of the current target



On Wed, 28 Jan 2015, Ian Campbell wrote:
> On Mon, 2015-01-26 at 17:03 +0000, Stefano Stabellini wrote:
> > In libxl_set_memory_target when setting the new maxmem, retain the same
> > offset on top of the current target. The offset includes memory
> > allocated by QEMU for rom files.
> 
> Did we apply that patch for 4.5? (should this be backported?)

No, we didn't. We decided to wait for the new dev cycle.


> How is this change expected to interact with relative vs. absolute mode?

This change works well with both.


> Does docs/misc/libxl_memory.txt not need an update to account for this
> change in behaviour?

No, because this patch doesn't change the memory layout: it only makes
sure that it stays the same when libxl_set_memory_target is called
after the guest has booted.


> > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > 
> > ---
> > 
> > Changes in v2:
> > - remove LIBXL_MAXMEM_CONSTANT from LIBXL__LOG_ERRNO.
> 
> And from the setmaxmem call too from the looks of it, can the reason for
> that be explained in the commit log please.

I am not really removing LIBXL_MAXMEM_CONSTANT for maxmem: by setting
the new maxmem as a relative change to the current one,
LIBXL_MAXMEM_CONSTANT has already been included.


> > ---
> >  tools/libxl/libxl.c |   14 +++++++-------
> >  1 file changed, 7 insertions(+), 7 deletions(-)
> > 
> > diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> > index cd6f42c..04062dd 100644
> > --- a/tools/libxl/libxl.c
> > +++ b/tools/libxl/libxl.c
> > @@ -4717,6 +4717,9 @@ int libxl_set_memory_target(libxl_ctx *ctx, uint32_t 
> > domid,
> >      char *uuid;
> >      xs_transaction_t t;
> >  
> > +    if (libxl_domain_info(ctx, &ptr, domid) < 0)
> > +        goto out_no_transaction;
> > +
> >  retry_transaction:
> >      t = xs_transaction_start(ctx->xsh);
> >  
> > @@ -4791,14 +4794,13 @@ retry_transaction:
> >          goto out;
> >      }
> >  
> > -    if (enforce) {
> > -        memorykb = new_target_memkb + videoram;
> > -        rc = xc_domain_setmaxmem(ctx->xch, domid, memorykb +
> > -                LIBXL_MAXMEM_CONSTANT);
> > +    if (enforce && new_target_memkb > 0) {
> 
> How does this change in the condition relate to the change here?

This is just one more correctness fix. I should note into the commit
message.


> > +        memorykb = ptr.max_memkb - current_target_memkb + new_target_memkb;
> > +        rc = xc_domain_setmaxmem(ctx->xch, domid, memorykb);
> >          if (rc != 0) {
> >              LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR,
> >                      "xc_domain_setmaxmem domid=%d memkb=%d failed "
> > -                    "rc=%d\n", domid, memorykb + LIBXL_MAXMEM_CONSTANT, 
> > rc);
> > +                    "rc=%d\n", domid, memorykb, rc);
> >              abort_transaction = 1;
> >              goto out;
> >          }
> > @@ -4823,8 +4825,6 @@ retry_transaction:
> >          goto out;
> >      }
> >  
> > -    libxl_dominfo_init(&ptr);
> > -    xcinfo2xlinfo(ctx, &info, &ptr);
> 
> >      uuid = libxl__uuid2string(gc, ptr.uuid);
> 
> I think you should move this and the dispose just outside the context up
> to the libxl_domain_info call, to keep them more obviously together.

OK


> >      libxl__xs_write(gc, t, libxl__sprintf(gc, "/vm/%s/memory", uuid),
> >              "%"PRIu32, new_target_memkb / 1024);
> 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.