On Mon, Apr 22, 2019 at 08:48:48AM +0800, Wei Yang wrote: > From: Zhang Yi <yi.z.zh...@linux.intel.com> > > When a file supporting DAX is used as vNVDIMM backend, mmap it with > MAP_SYNC flag in addition which can ensure file system metadata > synced in each guest writes to the backend file, without other QEMU > actions (e.g., periodic fsync() by QEMU). > > Current, We have below different possible use cases: > > 1. pmem=on is set, shared=on is set, MAP_SYNC supported: > a: backend is a dax supporting file. > - MAP_SYNC will active. > b: backend is not a dax supporting file. > - mmap will trigger a warning. then MAP_SYNC flag will be ignored > > 2. The rest of cases: > - we will never pass the MAP_SYNC to mmap2 > > Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com> > Signed-off-by: Zhang Yi <yi.z.zh...@linux.intel.com> > [ehabkost: Rebased patch to latest code on master] > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > Signed-off-by: Wei Yang <richardw.y...@linux.intel.com> > Tested-by: Wei Yang <richardw.y...@linux.intel.com> > > --- > v14: rebase on top of current upstream > --- > util/mmap-alloc.c | 41 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 40 insertions(+), 1 deletion(-) > > diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c > index 9713f4b960..f7f177d0ea 100644 > --- a/util/mmap-alloc.c > +++ b/util/mmap-alloc.c > @@ -10,6 +10,13 @@ > * later. See the COPYING file in the top-level directory. > */ > > +#ifdef CONFIG_LINUX > +#include <linux/mman.h> > +#else /* !CONFIG_LINUX */ > +#define MAP_SYNC 0x0 > +#define MAP_SHARED_VALIDATE 0x0 > +#endif /* CONFIG_LINUX */
MAP_SHARED_VALIDATE is is from 2017: commit 1c9725974074a047f6080eecc62c50a8e840d050 Author: Dan Williams <dan.j.willi...@intel.com> Date: Wed Nov 1 16:36:30 2017 +0100 mm: introduce MAP_SHARED_VALIDATE, a mechanism to safely define new mmap flags This code fails to compile on Linux hosts with pre-4.15 headers. Instead you could use the following (even on Linux!): #ifndef MAP_SYNC #define MAP_SYNC 0 #endif #ifndef MAP_SHARED_VALIDATE #define MAP_SHARED_VALIDATE 0 #endif Either way: Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
signature.asc
Description: PGP signature