Re: [Qemu-devel] [PATCH v2 2/2] virtio-pmem: Add virtio pmem driver

From: Pankaj Gupta
Date: Wed Oct 17 2018 - 15:11:54 EST

> On Fri, Oct 12, 2018 at 10:01 PM Pankaj Gupta <pagupta@xxxxxxxxxx> wrote:
> >
> > This patch adds virtio-pmem driver for KVM guest.
> >
> > Guest reads the persistent memory range information from
> > Qemu over VIRTIO and registers it on nvdimm_bus. It also
> > creates a nd_region object with the persistent memory
> > range information so that existing 'nvdimm/pmem' driver
> > can reserve this into system memory map. This way
> > 'virtio-pmem' driver uses existing functionality of pmem
> > driver to register persistent memory compatible for DAX
> > capable filesystems.
> >
> > This also provides function to perform guest flush over
> > VIRTIO from 'pmem' driver when userspace performs flush
> > on DAX memory range.
> Before we can move forward with this driver we need additional
> filesystem enabling to detect when the backing device is fronting DAX
> pmem or a paravirtualized page cache through virtio-pmem. Any
> interface that requires fsync() and a round trip to the hypervisor to
> flush host page cache is not DAX.

I saw your proposal[1] for new mmap flag MAP_DIRECT. IIUIC mapping should fail for
MAP_DIRECT if it requires explicit flush or buffer indirection. So, if we disable
MAP_SYNC flag for virtio-pmem this should fail MAP_DIRECT as well? Otherwise
without MAP_DIRECT, virtio-pmem should be defaulted to VIRTIO flush mechanism.