From: Pankaj Gupta <pagupta@redhat.com>
To: Yi Zhang <yi.z.zhang@linux.intel.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 02:21:39 -0500 (EST) [thread overview]
Message-ID: <790023026.65652877.1548055299697.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20190121061143.GB21562@tiger-server>
> > > ---
> > > 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
> >
> > > +
> > > + - '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
>
next prev parent reply other threads:[~2019-01-21 7:28 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 [this message]
2019-01-21 7:57 ` Yi Zhang
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=790023026.65652877.1548055299697.JavaMail.zimbra@redhat.com \
--to=pagupta@redhat.com \
--cc=dan.j.williams@intel.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=xiaoguangrong.eric@gmail.com \
--cc=yi.z.zhang@linux.intel.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.