qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: ThinerLogoer <logoerthiner1@163.com>,
	qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	libvir-list@redhat.com
Subject: Re: [PATCH v1 1/3] softmmu/physmem: fallback to opening guest RAM file as readonly in a MAP_PRIVATE mapping
Date: Fri, 11 Aug 2023 17:07:56 -0400	[thread overview]
Message-ID: <ZNajLPQvks/iSckH@x1n> (raw)
In-Reply-To: <23397e32-4631-6160-d501-8dfa521a890f@redhat.com>

On Fri, Aug 11, 2023 at 07:39:37PM +0200, David Hildenbrand wrote:
> On 11.08.23 18:54, Peter Xu wrote:
> > On Fri, Aug 11, 2023 at 06:25:14PM +0200, David Hildenbrand wrote:
> > > On 11.08.23 18:22, Peter Xu wrote:
> > > > On Fri, Aug 11, 2023 at 06:17:05PM +0200, David Hildenbrand wrote:
> > > > > We wouldn't touch "-mem-path".
> > > > 
> > > > But still the same issue when someone uses -object memory-backend-file for
> > > > hugetlb, mapping privately, expecting ram discard to work?
> > > > 
> > > > Basically I see that example as, "hugetlb" in general made the private
> > > > mapping over RW file usable, so forbidden that anywhere may take a risk.
> > > 
> > > These users can be directed to using hugetlb
> > > 
> > > a) using MAP_SHARED
> > > b) using memory-backend-memfd, if MAP_PRIVATE is desired
> > > 
> > > Am I missing any important use case? Are we being a bit to careful about
> > > virtio-balloon and postcopy simply not being available for these corner
> > > cases?
> > 
> > The current immediate issue is not really mem=rw + fd=rw + private case
> > (which was a known issue), but how to make mem=rw + fd=ro + private work
> > for ThinnerBloger, iiuc.
> > 
> > I'd just think it safer to expose that cap to solve problem A (vm
> > templating) without affecting problem B (fallcate-over-private not working
> > right), when B is uncertain.
> 
> Right, and I'm thinking about if B is worth the effort.
> 
> > 
> > I'm also copy Daniel & libvirt list in case there's quick comment from
> > there. Say, maybe libvirt never use private mapping on hugetlb files over
> > memory-backend-file at all, then it's probably fine.
> 
> libvirt certainly allows setting <access mode="shared"/> with <source
> type="file">.
> 
> Could be that they also end up mapping "<hugepages>" to memory-backend-file
> instead of memory-backend-memfd (e.g., compatibility with older kernels?).
> 
> > 
> > In all cases, you and Igor should have the final grasp; no stand on a
> > strong opinon from my side.
> 
> I do value your opinion, so I'm still trying to figure out if there are sane
> use cases that really need a new parameter. Let's recap:
> 
> When opening the file R/O, resulting in fallocate() refusing to work:
> * virtio-balloon will fail to discard RAM but continue to "be alive"
> * virtio-mem will discard any private pages, but cannot free up disk
>   blocks using fallocate.
> * postcopy would fail early
> 
> Postcopy:
> * Works on shmem (MAP_SHARED / MAP_PRIVATE)
> * Works on hugetlb (MAP_SHARED / MAP_PRIVATE)
> * Does not work on file-backed memory (including MAP_PRIVATE)
> 
> We can ignore virtio-mem for now. What remains is postcopy and
> virtio-balloon.
> 
> memory-backend-file with MAP_PRIVATE on shmem/tmpfs results in a double
> memory consumption, so we can mostly cross that out as "sane use case".
> Rather make such users aware of that :D
> 
> memory-backend-file with MAP_PRIVATE on hugetlb works. virtio-balloon is not
> really compatible with hugetlb, free-page-reporting might work (although
> quite non-nonsensical). So postcopy as the most important use case remains.
> 
> memory-backend-file with MAP_PRIVATE on file-backed memory works. postcopy
> does not apply. virtio-balloon should work I guess.
> 
> 
> So the two use cases that are left are:
> * postcopy with hugetlb would fail
> * virtio-balloon with file-backed memory cannot free up disk blocks
> 
> Am I missing a case?

Looks complete.  I don't want to say so, but afaik postcopy should be
"corner case" in most cases I'd say; people do still rely mostly on
precopy.  It's probably a matter of whether we'd like take the risk.

-- 
Peter Xu



  reply	other threads:[~2023-08-11 21:09 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-07 19:07 [PATCH v1 0/3] softmmu/physmem: file_ram_open() readonly improvements David Hildenbrand
2023-08-07 19:07 ` [PATCH v1 1/3] softmmu/physmem: fallback to opening guest RAM file as readonly in a MAP_PRIVATE mapping David Hildenbrand
2023-08-08 21:01   ` Peter Xu
2023-08-09  5:39     ` ThinerLogoer
2023-08-09  9:20     ` David Hildenbrand
2023-08-09 15:15       ` Peter Xu
2023-08-10 14:19         ` David Hildenbrand
2023-08-10 17:06           ` ThinerLogoer
2023-08-10 21:24             ` Peter Xu
2023-08-11  5:49               ` ThinerLogoer
2023-08-11 14:31                 ` Peter Xu
2023-08-12  6:21                   ` ThinerLogoer
2023-08-22 13:35                     ` David Hildenbrand
2023-08-11 19:00                 ` David Hildenbrand
2023-08-12  5:18                   ` ThinerLogoer
2023-08-17  9:07                     ` David Hildenbrand
2023-08-17 14:30                       ` David Hildenbrand
2023-08-17 14:37                         ` Daniel P. Berrangé
2023-08-17 14:37                           ` David Hildenbrand
2023-08-17 14:45                             ` Daniel P. Berrangé
2023-08-17 14:47                               ` David Hildenbrand
2023-08-17 14:41                       ` Peter Xu
2023-08-17 15:02                         ` David Hildenbrand
2023-08-17 15:13                       ` Stefan Hajnoczi
2023-08-17 15:15                         ` David Hildenbrand
2023-08-17 15:25                           ` David Hildenbrand
2023-08-17 15:31                           ` Peter Xu
2023-08-17 15:43                             ` David Hildenbrand
2023-08-17 13:46                   ` Daniel P. Berrangé
2023-08-17 13:48                     ` David Hildenbrand
2023-08-11 14:59               ` David Hildenbrand
2023-08-11 15:26                 ` David Hildenbrand
2023-08-11 16:16                   ` Peter Xu
2023-08-11 16:17                     ` David Hildenbrand
2023-08-11 16:22                       ` Peter Xu
2023-08-11 16:25                         ` David Hildenbrand
2023-08-11 16:54                           ` Peter Xu
2023-08-11 17:39                             ` David Hildenbrand
2023-08-11 21:07                               ` Peter Xu [this message]
2023-08-21 12:20                   ` Igor Mammedov
2023-08-11 15:47                 ` Peter Xu
2023-08-17 13:42           ` Daniel P. Berrangé
2023-08-17 13:45             ` David Hildenbrand
2023-08-17 13:37   ` Daniel P. Berrangé
2023-08-17 13:44     ` David Hildenbrand
2023-08-07 19:07 ` [PATCH v1 2/3] softmmu/physmem: fail creation of new files in file_ram_open() with readonly=true David Hildenbrand
2023-08-07 19:07 ` [PATCH v1 3/3] softmmu/physmem: never return directories from file_ram_open() David Hildenbrand
2023-08-08 17:26 ` Re:[PATCH v1 0/3] softmmu/physmem: file_ram_open() readonly improvements ThinerLogoer
2023-08-10 11:11   ` [PATCH " Philippe Mathieu-Daudé
2023-08-10 16:35     ` ThinerLogoer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZNajLPQvks/iSckH@x1n \
    --to=peterx@redhat.com \
    --cc=berrange@redhat.com \
    --cc=david@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=logoerthiner1@163.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).