qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PULL 08/27] hostmem-file: make option 'size' optional


From: Haozhong Zhang
Subject: Re: [Qemu-devel] [PULL 08/27] hostmem-file: make option 'size' optional
Date: Wed, 2 Nov 2016 09:27:44 +0800
User-agent: NeoMutt/20161014 (1.7.1)

On 11/01/16 12:16 -0200, Eduardo Habkost wrote:
On Tue, Nov 01, 2016 at 05:32:20PM +0800, Haozhong Zhang wrote:
On 10/31/16 20:22 -0200, Eduardo Habkost wrote:
> On Mon, Oct 31, 2016 at 03:47:53PM -0400, Paolo Bonzini wrote:
> >
> >
> > ----- Original Message -----
> > > From: "Eduardo Habkost" <address@hidden>
> > > To: "Paolo Bonzini" <address@hidden>
> > > Cc: address@hidden, "Haozhong Zhang" <address@hidden>
> > > Sent: Monday, October 31, 2016 7:20:10 PM
> > > Subject: Re: [Qemu-devel] [PULL 08/27] hostmem-file: make option 'size' 
optional
> > >
> > > On Mon, Oct 31, 2016 at 03:37:24PM +0100, Paolo Bonzini wrote:
> > > [...]
> > > > @@ -1309,21 +1317,27 @@ static void *file_ram_alloc(RAMBlock *block,
> > > >
> > > >      file_size = get_file_size(fd);
> > > >
> > > > -    if (memory < block->page_size) {
> > > > +    if (!mem_size && file_size > 0) {
> > > > +        mem_size = file_size;
> > > > +        memory_region_set_size(block->mr, mem_size);
> > > > +    }
> > > > +
> > > > +    if (mem_size < block->page_size) {
> > > >          error_setg(errp, "memory size 0x" RAM_ADDR_FMT " must be equal 
to
> > > >          "
> > > >                     "or larger than page size 0x%zx",
> > > > -                   memory, block->page_size);
> > > > +                   mem_size, block->page_size);
> > > >          goto error;
> > > >      }
> > > >
> > > > -    if (file_size > 0 && file_size < memory) {
> > > > +    if (file_size > 0 && file_size < mem_size) {
> > > >          error_setg(errp, "backing store %s size %"PRId64
> > > >                     " does not match 'size' option %"PRIu64,
> > > > -                   path, file_size, memory);
> > > > +                   path, file_size, mem_size);
> > > >          goto error;
> > > >      }
> > > >
> > > > -    memory = ROUND_UP(memory, block->page_size);
> > > > +    mem_size = ROUND_UP(mem_size, block->page_size);
> > > > +    *memory = mem_size;
> > >
> > > I suggested not touching *memory unless it was zero, and setting
> > > it to the memory region size, not the rounded-up size. Haozhong
> > > said this was going to be changed.
> > >
> > > This will have the side-effect of setting block->used_length and
> > > block->max_length to the rounded up size in
> > > qemu_ram_alloc_from_file() (instead of the original memory region
> > > size). I don't know what could be the consequences of that.
> > >
> > > This patch also skip HOST_PAGE_ALIGN-ing mem_size after getting
> > > the file size, which would be different from the behavior when
> > > size is specified explicitly. (And I also don't know the
> > > consequences of that)
> > >
> > > Considering that this pull request failed to build, I suggest
> > > waiting for a new version from Haozhong.
> >
> > Yes, I'll drop these three patches.
>
> I believe you can keep the other two (as long as the build error
> is fixed). I was already going to include them in my pull
> request, but removed them.

I'm a little confused. Do I need to send a following patch to fix this
build error? I was going to send a new version of the entire patch
series.

I thought we could fix it while committing, to make sure it gets
in a pull request for soft freeze. But:

* Patch 1/3 ("do not truncate") is a bug fix for nvdimm, so
 eligible post-soft-freeze.
* Patch 2/3 ("check file size") looks like a bug fix too.
* Patch 3/3 ("make size optional") is not a bug fix and is
 riskier, so I believe it won't get into 2.8.

So sending a new series is probably simpler, as patch 1-2 can be
included after soft freeze.


Got it. I'll resend patch 2/3 to fix the build error, and send the new
version of patch 3/3 in another series for 2.9.

Thanks,
Haozhong



reply via email to

[Prev in Thread] Current Thread [Next in Thread]