[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 3/3] hostmem-file: make option 'size' optiona
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH v2 3/3] hostmem-file: make option 'size' optional |
Date: |
Mon, 31 Oct 2016 16:18:34 -0200 |
User-agent: |
Mutt/1.7.0 (2016-08-17) |
On Fri, Oct 28, 2016 at 10:06:40AM +0800, Haozhong Zhang wrote:
[...]
> > > diff --git a/exec.c b/exec.c
> > > index 264a25f..89065bd 100644
> > > --- a/exec.c
> > > +++ b/exec.c
> > > @@ -1234,7 +1234,7 @@ static int64_t get_file_size(int fd)
> > > }
> > >
> > > static void *file_ram_alloc(RAMBlock *block,
> > > - ram_addr_t memory,
> > > + ram_addr_t *memory,
> > > const char *path,
> > > Error **errp)
> > > {
> > > @@ -1245,6 +1245,7 @@ static void *file_ram_alloc(RAMBlock *block,
> > > void *area = MAP_FAILED;
> > > int fd = -1;
> > > int64_t file_size;
> > > + ram_addr_t mem_size = *memory;
> > >
> > > if (kvm_enabled() && !kvm_has_sync_mmu()) {
> > > error_setg(errp,
> > > @@ -1309,21 +1310,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;
> >
> > Maybe we should set *memory here and not below?
> >
>
> Qemu currently sets the memory region size to the file size, and block
> length to the aligned file size, so the code here can be changed as below:
>
> memory_region_set_size(block->mr, mem_size);
> mem_size = HOST_PAGE_ALIGN(mem_size);
> *memory = mem_size;
>
> The second line is necessary because Qemu currently passes the aligned
> file size to file_ram_alloc().
That would duplicate the existing HOST_PAGE_ALIGN logic from
qemu_ram_alloc_from_file(), won't it?
I believe that's yet another reason to check file size before
initializing the memory region, instead of initializing it first,
and fixing up its size later.
--
Eduardo
- Re: [Qemu-devel] [PATCH v2 1/3] exec.c: do not truncate non-empty memory backend file, (continued)
[Qemu-devel] [PATCH v2 2/3] exec.c: check memory backend file size with 'size' option, Haozhong Zhang, 2016/10/27
[Qemu-devel] [PATCH v2 3/3] hostmem-file: make option 'size' optional, Haozhong Zhang, 2016/10/27
Re: [Qemu-devel] [PATCH v2 0/3] Improve truncation behavior of memory-backend-file, Paolo Bonzini, 2016/10/27