Re: [RFC] KVM "fake DAX" device flushing

From: Dan Williams
Date: Wed Oct 11 2017 - 15:22:48 EST


On Wed, Oct 11, 2017 at 11:51 AM, Pankaj Gupta <pagupta@xxxxxxxxxx> wrote:
> We are sharing the prototype version of 'fake DAX' flushing
> interface for the initial feedback. This is still work in progress
> and not yet ready for merging.
>
> Protoype right now just implements basic functionality without advanced
> features with two major parts:
>
> - Qemu virtio-pmem device
> It exposes a persistent memory range to KVM guest which at host side is file
> backed memory and works as persistent memory device. In addition to this it
> provides a virtio flushing interface for KVM guest to do a Qemu side sync for
> guest DAX persistent memory range.
>
> - Guest virtio-pmem driver
> Reads persistent memory range from paravirt device and reserves system memory map.
> It also allocates a block device corresponding to the pmem range which is accessed
> by DAX capable file systems. (file system support is still pending).
>
> We shared the project idea for 'fake DAX' flushing interface here [1].
> Based on suggestions here [2], we implemented guest 'virtio-pmem'
> driver and Qemu paravirt device.
>
> [1] https://www.spinics.net/lists/kvm/msg149761.html
> [2] https://www.spinics.net/lists/kvm/msg153095.html
>
> Work yet to be done:
>
> - Separate out the common code used by ACPI pmem interface and
> reuse it.
>
> - In pmem device memmap allocation and working. There is some parallel work
> going on upstream related to 'memory_hotplug restructuring' [3] and also hitting
> a memory section alignment issue [4].
>
> [3] https://lwn.net/Articles/712099/
> [4] https://www.mail-archive.com/linux-nvdimm@xxxxxxxxxxxx/msg02978.html
>
> - Provide DAX capable file-system(ext4 & XFS) support.
> - Qemu device flush functionality.
> - Qemu live migration work when host page cache is used.
> - Multiple virtio-pmem disks support.
>
> Prototype implementation for feedback:
>
> Kernel: https://github.com/pagupta/linux/commit/d15cf90074eae91aeed7a228da3faf319566dd40

Please send this as a patch so it can be reviewed over email.