lkml.org 
[lkml]   [2018]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[RFC 0/2] kvm "fake DAX" device flushing
Date
We are sharing RFC version of 'fake DAX' flushing
interface for feedback. This is still work in progress
and not yet ready for merging.

Prototype implements 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 registers with 'nvdimm_bus'.
'nvdimm/pmem' driver uses this information to allocate persistent memory range.
Also, we have implemented guest side of VIRTIO flushing interface.

Changes from previous RFC:

- Reuse existing 'pmem' code instead of creating an entirely new block driver.
- Use VIRTIO driver to register memory information with nvdimm_bus and create
region_type accordingly.
- Use VIRTIO flushing interface from existing pmem driver code based on
registered flushign mechanism.

We have done the implementation based on suggestions here [1]. Previous RFC is
shared here [2]. Details of project idea for 'fake DAX' flushing is shared
here [3] & [4].

[1] https://marc.info/?l=linux-mm&m=150782346802290&w=2
[2] https://marc.info/?l=kvm&m=151630416506527&w=2
[3] https://www.spinics.net/lists/kvm/msg149761.html
[4] https://www.spinics.net/lists/kvm/msg153095.html

Work yet to be done:

- Qemu RAM address handling independent of PC-DIMM so that memory
operations(get_free_address) can be used for VIRTIO device type as well.
(David Hildenbrand CCed has a prototype for this).
- 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/region_devs.c | 7 ++
drivers/virtio/Kconfig | 12 +++
drivers/virtio/Makefile | 1
drivers/virtio/virtio_pmem.c | 122 +++++++++++++++++++++++++++++++++++++++
include/linux/libnvdimm.h | 2
include/uapi/linux/virtio_ids.h | 1
include/uapi/linux/virtio_pmem.h | 61 +++++++++++++++++++
7 files changed, 206 insertions(+)

\
 
 \ /
  Last update: 2018-04-05 12:49    [W:0.078 / U:3.520 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site