[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V6 0/7] nvdimm: guarantee persistence of QEMU writes
From: |
junyan . he |
Subject: |
[Qemu-devel] [PATCH V6 0/7] nvdimm: guarantee persistence of QEMU writes to persistent memory |
Date: |
Fri, 1 Jun 2018 16:10:22 +0800 |
From: Junyan He <address@hidden>
QEMU writes to vNVDIMM backends in the vNVDIMM label emulation and
live migration. If the backend is on the persistent memory, QEMU needs
to take proper operations to ensure its writes persistent on the
persistent memory. Otherwise, a host power failure may result in the
loss the guest data on the persistent memory.
This v3 patch series is based on Marcel's patch "mem: add share
parameter to memory-backend-ram" [1] because of the changes in patch 1.
[1] https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg03858.html
Previous versions can be found at
v5: https://lists.gnu.org/archive/html/qemu-devel/2018-05/msg02258.html
V4: https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg06993.html
v3: https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg04365.html
v2: https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg01579.html
v1: https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg05040.html
Changes in v6:
* (Patch 1) Expose all ram block flags rather than redefine the flags.
* (Patch 4) Use pkg-config rather the hard check when configure.
* (Patch 7) Sync and flush all the pmem data when migration completes,
rather than sync pages one by one in previous version.
Changes in v5:
* (Patch 9) Add post copy check and output some messages for nvdimm.
Changes in v4:
* (Patch 2) Fix compilation errors found by patchew.
Changes in v3:
* (Patch 5) Add a is_pmem flag to ram_handle_compressed() and handle
PMEM writes in it, so we don't need the _common function.
* (Patch 6) Expose qemu_get_buffer_common so we can remove the
unnecessary qemu_get_buffer_to_pmem wrapper.
* (Patch 8) Add a is_pmem flag to xbzrle_decode_buffer() and handle
PMEM writes in it, so we can remove the unnecessary
xbzrle_decode_buffer_{common, to_pmem}.
* Move libpmem stubs to stubs/pmem.c and fix the compilation failures
of test-{xbzrle,vmstate}.c.
Changes in v2:
* (Patch 1) Use a flags parameter in file ram allocation functions.
* (Patch 2) Add a new option 'pmem' to hostmem-file.
* (Patch 3) Use libpmem to operate on the persistent memory, rather
than re-implementing those operations in QEMU.
* (Patch 5-8) Consider the write persistence in the migration path.
Junyan:
[1/7] memory, exec: Expose all memory block related flags.
[6/7] migration/ram: Add check and info message to nvdimm post copy.
[7/7] migration/ram: ensure write persistence on loading all date to PMEM.
Haozhong:
[5/7] mem/nvdimm: ensure write persistence to PMEM in label emulation
Haozhong & Junyan:
[2/7] memory, exec: switch file ram allocation functions to 'flags' parameters
[3/7] hostmem-file: add the 'pmem' option
[4/7] configure: add libpmem support
Signed-off-by: Haozhong Zhang <address@hidden>
Signed-off-by: Junyan He <address@hidden>
---
backends/hostmem-file.c | 28 +++++++++++++++++++++++++++-
configure | 29 +++++++++++++++++++++++++++++
docs/nvdimm.txt | 14 ++++++++++++++
exec.c | 36 ++++++++++++++----------------------
hw/mem/nvdimm.c | 9 ++++++++-
include/exec/memory.h | 31 +++++++++++++++++++++++++++++--
include/exec/ram_addr.h | 28 ++++++++++++++++++++++++++--
include/qemu/pmem.h | 24 ++++++++++++++++++++++++
memory.c | 8 +++++---
migration/ram.c | 18 ++++++++++++++++++
numa.c | 2 +-
qemu-options.hx | 7 +++++++
stubs/Makefile.objs | 1 +
stubs/pmem.c | 23 +++++++++++++++++++++++
14 files changed, 226 insertions(+), 32 deletions(-)
--
2.7.4
- [Qemu-devel] [PATCH V6 0/7] nvdimm: guarantee persistence of QEMU writes to persistent memory,
junyan . he <=
- [Qemu-devel] [PATCH V6 1/7] memory, exec: Expose all memory block related flags., junyan . he, 2018/06/01
- [Qemu-devel] [PATCH V6 2/7] memory, exec: switch file ram allocation functions to 'flags' parameters, junyan . he, 2018/06/01
- [Qemu-devel] [PATCH V6 3/7] hostmem-file: add the 'pmem' option, junyan . he, 2018/06/01
- [Qemu-devel] [PATCH V6 4/7] configure: add libpmem support, junyan . he, 2018/06/01