From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43942) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gP0mo-0003Ns-3R for qemu-devel@nongnu.org; Tue, 20 Nov 2018 02:49:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gP0mk-00026v-VQ for qemu-devel@nongnu.org; Tue, 20 Nov 2018 02:49:30 -0500 Received: from mga02.intel.com ([134.134.136.20]:38756) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gP0mk-0001Dm-Ku for qemu-devel@nongnu.org; Tue, 20 Nov 2018 02:49:26 -0500 From: Zhang Yi Date: Tue, 20 Nov 2018 15:47:58 +0800 Message-Id: Subject: [Qemu-devel] [PATCH V5_resend 0/7] nvdimm: support MAP_SYNC for memory-backend-file List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xiaoguangrong.eric@gmail.com, dan.j.williams@intel.com, stefanha@redhat.com, pbonzini@redhat.com, yu.c.zhang@linux.intel.com Cc: mst@redhat.com, qemu-devel@nongnu.org, imammedo@redhat.com, ehabkost@redhat.com, Zhang Yi 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', QEMU will abort - off: never pass MAP_SYNC to mmap(2) - auto (default): if MAP_SYNC is supported and 'share=on', work as if 'sync=on'; otherwise, work as if 'sync=off' Zhang Yi (7): numa: Fixed the memory leak of numa error message util/mmap-alloc: switch qemu_ram_mmap() to 'flags' parameter exec: switch qemu_ram_alloc_from_{file, fd} to the '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 | 20 +++++++++++++++- exec.c | 9 +++---- include/exec/memory.h | 18 ++++++++++++++ include/exec/ram_addr.h | 1 + include/qemu/mmap-alloc.h | 20 +++++++++++++++- include/standard-headers/linux/mman.h | 44 ++++++++++++++++++++++++++++++++++ numa.c | 1 + qemu-options.hx | 22 ++++++++++++++++- util/mmap-alloc.c | 26 ++++++++++++++++---- util/oslib-posix.c | 4 +++- 12 files changed, 200 insertions(+), 18 deletions(-) create mode 100644 include/standard-headers/linux/mman.h -- 2.7.4