All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yi Zhang <yi.z.zhang@linux.intel.com>
To: Pankaj Gupta <pagupta@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	xiaoguangrong eric <xiaoguangrong.eric@gmail.com>,
	stefanha@redhat.com, pbonzini@redhat.com,
	yu c zhang <yu.c.zhang@linux.intel.com>,
	ehabkost@redhat.com, qemu-devel@nongnu.org, imammedo@redhat.com,
	dan j williams <dan.j.williams@intel.com>
Subject: Re: [Qemu-devel] [PATCH V9 6/6] docs: Added MAP_SYNC documentation
Date: Mon, 21 Jan 2019 15:57:18 +0800	[thread overview]
Message-ID: <20190121075717.GA24848@tiger-server> (raw)
In-Reply-To: <790023026.65652877.1548055299697.JavaMail.zimbra@redhat.com>

On 2019-01-21 at 02:21:39 -0500, Pankaj Gupta wrote:
> 
> > > > ---
> > > >  docs/nvdimm.txt | 21 ++++++++++++++++++++-
> > > >  qemu-options.hx |  4 ++++
> > > >  2 files changed, 24 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/docs/nvdimm.txt b/docs/nvdimm.txt
> > > > index 5f158a6..565ba73 100644
> > > > --- a/docs/nvdimm.txt
> > > > +++ b/docs/nvdimm.txt
> > > > @@ -142,11 +142,30 @@ backend of vNVDIMM:
> > > >  Guest Data Persistence
> > > >  ----------------------
> > > >  
> > > > +vNVDIMM is designed and implemented to guarantee the guest data
> > > > +persistence on the backends even on the host crash and power
> > > 
> > > in case of a host crash or a power failure
> > > 
> > > (be consistent)
> > > 
> > > > +failures. However, there are still some requirements and limitations
> > > > +as explained below.
> > > > +
> > > >  Though QEMU supports multiple types of vNVDIMM backends on Linux,
> > > > -currently the only one that can guarantee the guest write persistence
> > > > +if MAP_SYNC is not supported by the host kernel and the backends,
> > > > +the only backend that can guarantee the guest write persistence
> > > >  is the device DAX on the real NVDIMM device (e.g., /dev/dax0.0), to
> > > >  which all guest access do not involve any host-side kernel cache.
> > > >  
> > > > +mmap(2) flag MAP_SYNC is added since Linux kernel 4.15. On such
> > > > +systems, QEMU can mmap(2) the backend with MAP_SYNC, which can ensure
> > > 
> > > which ensures
> > > 
> > > > +filesystem metadata consistent
> > > 
> > > consistency
> > > 
> > > > even after a system crash or power
> > > 
> > > a power
> > > 
> > > > +failure. Besides the host kernel support, enabling MAP_SYNC in QEMU
> > > > +also requires:
> > > > +
> > > > + - the backend is a file supporting DAX, e.g., a file on an ext4 or
> > > > +   xfs file system mounted with '-o dax',
> > > > +
> > > > + - 'share' option of memory-backend-file is 'on'.
> > > 
> > > why does share need to be on?
> > According to mmap(2) man page,
> > MAP_SYNC is available only with the MAP_SHARED_VALIDATE map‐ping type.
> > I will add this to documentation, Thanks.
> 
> MAP_SHARE_VALIDATE should be used to validate MAP_SYNC with MAP_SHARED.
> 
> #define MAP_SHARED_VALIDATE 0x03
> 
> In contrast, MAP_SHARED is:
> #define MAP_SHARED      0x01            /* Share changes */
> 
> I think we should use MAP_SHARED_VALIDATE with MAP_SYNC here?
> 
> Thanks,
> Pankaj
Yes, Pankaj, Thanks point that out, I will add the MAP_SHARED_VALIDATE.
> 
> > > 
> > > > +
> > > > + - 'pmem' option of memory-backend-file is 'on'
> > > > +
> > > >  When using other types of backends, it's suggested to set 'unarmed'
> > > >  option of '-device nvdimm' to 'on', which sets the unarmed flag of the
> > > >  guest NVDIMM region mapping structure.  This unarmed flag indicates
> > > > diff --git a/qemu-options.hx b/qemu-options.hx
> > > > index 08f8516..545cb8a 100644
> > > > --- a/qemu-options.hx
> > > > +++ b/qemu-options.hx
> > > > @@ -4002,6 +4002,10 @@ using the SNIA NVM programming model (e.g. Intel
> > > > NVDIMM).
> > > >  If @option{pmem} is set to 'on', QEMU will take necessary operations to
> > > >  guarantee the persistence of its own writes to @option{mem-path}
> > > >  (e.g. in vNVDIMM label emulation and live migration).
> > > > +Also, we will map the backend-file with MAP_SYNC flag, which can ensure
> > > > +the file metadata is in sync to @option{mem-path} even on the host crash
> > > > +and power failures. MAP_SYNC requires supports from both the host kernel
> > > 
> > > requires support
> > > 
> > > > +(since Linux kernel 4.15) and @option{mem-path} (only files supporting
> > > > DAX).
> > > >  
> > > >  @item -object
> > > >  memory-backend-ram,id=@var{id},merge=@var{on|off},dump=@var{on|off},share=@var{on|off},prealloc=@var{on|off},size=@var{size},host-nodes=@var{host-nodes},policy=@var{default|preferred|bind|interleave}
> > > >  
> > > > --
> > > > 2.7.4
> > 

      reply	other threads:[~2019-01-21  8:06 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-16  8:10 [Qemu-devel] [PATCH V9 0/6] support MAP_SYNC for memory-backend-file Zhang Yi
2019-01-16  8:10 ` [Qemu-devel] [PATCH V9 1/6] numa: Fixed the memory leak of numa error message Zhang Yi
2019-01-16 15:56   ` Michael S. Tsirkin
2019-01-18 17:36     ` Eduardo Habkost
2019-01-16  8:10 ` [Qemu-devel] [PATCH V9 2/6] memory: use sparse feature define RAM_FLAG Zhang Yi
2019-01-16 15:55   ` Michael S. Tsirkin
2019-01-21  6:35     ` Yi Zhang
2019-01-21 20:24       ` Michael S. Tsirkin
2019-01-22  3:25         ` Yi Zhang
2019-01-16  8:10 ` [Qemu-devel] [PATCH V9 3/6] util/mmap-alloc: switch 'shared' to 'flags' parameter Zhang Yi
2019-01-16 15:49   ` Michael S. Tsirkin
2019-01-16  8:10 ` [Qemu-devel] [PATCH V9 4/6] util/mmap-alloc: support MAP_SYNC in qemu_ram_mmap() Zhang Yi
2019-01-16 15:58   ` Michael S. Tsirkin
2019-01-18 18:11     ` Eduardo Habkost
2019-01-21  5:15       ` Yi Zhang
2019-01-21 14:44         ` Eduardo Habkost
2019-01-22  3:21           ` Yi Zhang
2019-01-22  3:27             ` Michael S. Tsirkin
2019-01-22 17:33               ` Dan Williams
2019-01-22 18:47                 ` Michael S. Tsirkin
2019-01-16  8:11 ` [Qemu-devel] [PATCH V9 5/6] hostmem: add more information in error messages Zhang Yi
2019-01-16 11:30   ` Stefano Garzarella
2019-01-16  8:11 ` [Qemu-devel] [PATCH V9 6/6] docs: Added MAP_SYNC documentation Zhang Yi
2019-01-16 15:40   ` Michael S. Tsirkin
2019-01-21  6:11     ` Yi Zhang
2019-01-21  7:21       ` Pankaj Gupta
2019-01-21  7:57         ` Yi Zhang [this message]

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=20190121075717.GA24848@tiger-server \
    --to=yi.z.zhang@linux.intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=pagupta@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=xiaoguangrong.eric@gmail.com \
    --cc=yu.c.zhang@linux.intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.