From: Zhang Yi <yi.z.zhang@linux.intel.com>
To: mst@redhat.com, peter.maydell@linaro.org,
yu.c.zhang@linux.intel.com, ehabkost@redhat.com,
imammedo@redhat.com
Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, stefanha@redhat.com,
crosthwaite.peter@gmail.com, richard.henderson@linaro.org,
xiaoguangrong.eric@gmail.com,
Zhang Yi <yi.z.zhang@linux.intel.com>
Subject: [Qemu-devel] [PATCH V7 0/6] nvdimm: support MAP_SYNC for memory-backend-file
Date: Tue, 18 Dec 2018 16:16:44 +0800 [thread overview]
Message-ID: <cover.1545120100.git.yi.z.zhang@linux.intel.com> (raw)
Linux 4.15 introduces a new mmap flag MAP_SYNC, which can be used to
guarantee the write persistence to mmap'ed files supporting DAX (e.g.,
files on ext4/xfs file system mounted with '-o dax').
A description of MAP_SYNC and MAP_SHARED_VALIDATE can be found at
https://patchwork.kernel.org/patch/10028151/
In order to make sure that the file metadata is in sync after a fault
while we are writing a shared DAX supporting backend files, this
patch-set enables QEMU to use MAP_SYNC flag for memory-backend-dax-file.
As the DAX vs DMA truncated issue was solved, we refined the code and
send out this feature for the v5 version.
A new auto on/off option 'sync' is added to memory-backend-file:
- on: try to pass MAP_SYNC to mmap(2); if MAP_SYNC is not supported or
'share=off' or 'pmem=off', QEMU will abort
- off: never pass MAP_SYNC to mmap(2)
- auto (default): if MAP_SYNC is supported and 'share=on' 'pmem=on', work as if
'sync=on'; otherwise, work as if 'sync=off'
Changes in v7:
* Micheal: [3,4,6]/6 limited the "sync" flag only on a nvdimm backend.(pmem=on)
Changes in v6:
* Pankaj: 3/7 are squashed with 2/7
* Pankaj: 7/7 update comments to "consistent filesystem metadata".
* Pankaj, Igor: 1/7 Added Reviewed-by in patch-1/7
* Stefan, 4/7 move the include header from "/linux/mman.h" to "osdep.h"
* Stefan, 5/7 Add missing "munmap"
* Stefan, 2/7 refine the shared/flag.
Changes in v5:
* Add patch 1 to fix a memory leak issue.
* Refine the patch 4-6
* Remove the patch 3 as we already change the parameter from "shared" to
"flags"
Changes in v4:
* Add patch 1-3 to switch some functions to a single 'flags'
parameters. (Michael S. Tsirkin)
* v3 patch 1-3 become v4 patch 4-6.
* Patch 4: move definitions of MAP_SYNC and MAP_SHARED_VALIDATE to a
new header file under include/standard-headers/linux/. (Michael S. Tsirkin)
* Patch 6: refine the description of the 'sync' option. (Michael S. Tsirkin)
Changes in v3:
* Patch 1: add MAP_SHARED_VALIDATE in both sync=on and sync=auto
cases, and add back the retry mechanism. MAP_SYNC will be ignored
by Linux kernel 4.15 if MAP_SHARED_VALIDATE is missed.
* Patch 1: define MAP_SYNC and MAP_SHARED_VALIDATE as 0 on non-Linux
platforms in order to make qemu_ram_mmap() compile on those platforms.
* Patch 2&3: include more information in error messages of
memory-backend in hope to help user to identify the error.
(Dr. David Alan Gilbert)
* Patch 3: fix typo in the commit message. (Dr. David Alan Gilbert)
Changes in v2:
* Add 'sync' option to control the use of MAP_SYNC. (Eduardo Habkost)
* Remove the unnecessary set of MAP_SHARED_VALIDATE in some cases and
the retry mechanism in qemu_ram_mmap(). (Michael S. Tsirkin)
* Move OS dependent definitions of MAP_SYNC and MAP_SHARED_VALIDATE
to osdep.h. (Michael S. Tsirkin)
Zhang Yi (6):
numa: Fixed the memory leak of numa error message
util/mmap-alloc: switch qemu_ram_mmap() to 'flags' parameter
util/mmap-alloc: support MAP_SYNC in qemu_ram_mmap()
util/mmap-alloc: Switch the RAM_SYNC flags to OnOffAuto
hostmem: add more information in error messages
hostmem-file: add 'sync' option
backends/hostmem-file.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
backends/hostmem.c | 8 +++++---
docs/nvdimm.txt | 22 +++++++++++++++++++++-
exec.c | 9 +++++----
include/exec/memory.h | 18 ++++++++++++++++++
include/exec/ram_addr.h | 1 +
include/qemu/mmap-alloc.h | 20 +++++++++++++++++++-
include/qemu/osdep.h | 29 +++++++++++++++++++++++++++++
numa.c | 1 +
qemu-options.hx | 22 +++++++++++++++++++++-
util/mmap-alloc.c | 27 ++++++++++++++++++++++-----
util/oslib-posix.c | 8 +++++++-
12 files changed, 192 insertions(+), 18 deletions(-)
--
2.7.4
next reply other threads:[~2018-12-18 8:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-18 8:16 Zhang Yi [this message]
2018-12-18 8:16 ` [Qemu-devel] [PATCH V7 1/6] numa: Fixed the memory leak of numa error message Zhang Yi
2018-12-18 8:17 ` [Qemu-devel] [PATCH V7 2/6] util/mmap-alloc: switch qemu_ram_mmap() to 'flags' parameter Zhang Yi
2018-12-18 13:35 ` Michael S. Tsirkin
2018-12-18 8:17 ` [Qemu-devel] [PATCH V7 3/6] util/mmap-alloc: support MAP_SYNC in qemu_ram_mmap() Zhang Yi
2018-12-18 13:52 ` Michael S. Tsirkin
2018-12-19 9:25 ` Yi Zhang
2018-12-19 16:42 ` Michael S. Tsirkin
2018-12-18 8:17 ` [Qemu-devel] [PATCH V7 4/6] util/mmap-alloc: Switch the RAM_SYNC flags to OnOffAuto Zhang Yi
2018-12-18 8:17 ` [Qemu-devel] [PATCH V7 5/6] hostmem: add more information in error messages Zhang Yi
2018-12-18 8:17 ` [Qemu-devel] [PATCH V7 6/6] hostmem-file: add 'sync' option Zhang Yi
2018-12-18 14:18 ` Michael S. Tsirkin
2018-12-19 9:10 ` Yi Zhang
2018-12-19 15:59 ` Michael S. Tsirkin
2018-12-20 3:03 ` Yi Zhang
2018-12-20 3:42 ` Michael S. Tsirkin
2018-12-20 5:37 ` Yi Zhang
2018-12-20 14:06 ` Michael S. Tsirkin
2018-12-21 3:18 ` Yi Zhang
2018-12-21 16:36 ` Michael S. Tsirkin
2018-12-24 8:11 ` Yi Zhang
2019-09-16 15:14 ` Michael S. Tsirkin
2018-12-18 9:18 ` [Qemu-devel] [PATCH V7 0/6] nvdimm: support MAP_SYNC for memory-backend-file Stefan Hajnoczi
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=cover.1545120100.git.yi.z.zhang@linux.intel.com \
--to=yi.z.zhang@linux.intel.com \
--cc=crosthwaite.peter@gmail.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.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.