[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 0/2] KVM "fake DAX" device flushing
From: |
Pankaj Gupta |
Subject: |
[Qemu-devel] [RFC 0/2] KVM "fake DAX" device flushing |
Date: |
Thu, 12 Oct 2017 21:20:24 +0530 |
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.
Prototype 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/address@hidden/msg02978.html
- Provide DAX capable file-system(ext4 & XFS) support.
- Qemu device flush functionality trigger with guest fsync on file.
- Qemu live migration work when host page cache is used.
- Multiple virtio-pmem disks support.
- Prepare virtio spec after we get feedback on current approach.
drivers/nvdimm/pfn.h | 14 -
drivers/nvdimm/pfn_devs.c | 20 --
drivers/nvdimm/pmem.c | 40 ----
drivers/nvdimm/pmem.h | 5
drivers/virtio/Kconfig | 10 +
drivers/virtio/Makefile | 1
drivers/virtio/virtio_pmem.c | 322 +++++++++++++++++++++++++++++++++++++++
include/linux/memremap.h | 23 ++
include/linux/pfn.h | 15 +
include/linux/pmem_common.h | 52 ++++++
include/uapi/linux/virtio_pmem.h | 55 ++++++
11 files changed, 479 insertions(+), 78 deletions(-)
- [Qemu-devel] [RFC 0/2] KVM "fake DAX" device flushing,
Pankaj Gupta <=
- [Qemu-devel] [RFC 1/2] pmem: Move reusable code to base header files, Pankaj Gupta, 2017/10/12
- [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Pankaj Gupta, 2017/10/12
- Re: [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Dan Williams, 2017/10/12
- Re: [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Pankaj Gupta, 2017/10/12
- Re: [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Dan Williams, 2017/10/12
- Re: [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Pankaj Gupta, 2017/10/12
- Re: [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Rik van Riel, 2017/10/12
- Re: [Qemu-devel] [RFC 2/2] KVM: add virtio-pmem driver, Pankaj Gupta, 2017/10/12