qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 0/8] nvdimm: guarantee persistence of QEMU writes to persistent memory
@ 2018-02-28  7:25 Haozhong Zhang
  2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 1/8] memory, exec: switch file ram allocation functions to 'flags' parameters Haozhong Zhang
                   ` (10 more replies)
  0 siblings, 11 replies; 19+ messages in thread
From: Haozhong Zhang @ 2018-02-28  7:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Igor Mammedov, Paolo Bonzini, mst,
	Xiao Guangrong, Juan Quintela, dgilbert, Stefan Hajnoczi,
	Dan Williams, Haozhong Zhang

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
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 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.

Haozhong Zhang (8):
  [1/8] memory, exec: switch file ram allocation functions to 'flags' parameters
  [2/8] hostmem-file: add the 'pmem' option
  [3/8] configure: add libpmem support
  [4/8] mem/nvdimm: ensure write persistence to PMEM in label emulation
  [5/8] migration/ram: ensure write persistence on loading zero pages to PMEM
  [6/8] migration/ram: ensure write persistence on loading normal pages to PMEM
  [7/8] migration/ram: ensure write persistence on loading compressed pages to PMEM
  [8/8] migration/ram: ensure write persistence on loading xbzrle pages to PMEM

 backends/hostmem-file.c             | 27 +++++++++++++++++++-
 configure                           | 35 ++++++++++++++++++++++++++
 docs/nvdimm.txt                     | 14 +++++++++++
 exec.c                              | 20 ++++++++++++---
 hw/mem/nvdimm.c                     |  9 ++++++-
 include/exec/memory.h               | 12 +++++++--
 include/exec/ram_addr.h             | 28 +++++++++++++++++++--
 include/migration/qemu-file-types.h |  2 ++
 include/qemu/pmem.h                 | 27 ++++++++++++++++++++
 memory.c                            |  8 +++---
 migration/qemu-file.c               | 29 ++++++++++++++--------
 migration/ram.c                     | 49 +++++++++++++++++++++++++++----------
 migration/ram.h                     |  2 +-
 migration/rdma.c                    |  2 +-
 migration/xbzrle.c                  |  8 ++++--
 migration/xbzrle.h                  |  3 ++-
 numa.c                              |  2 +-
 qemu-options.hx                     |  9 ++++++-
 stubs/Makefile.objs                 |  1 +
 stubs/pmem.c                        | 37 ++++++++++++++++++++++++++++
 tests/Makefile.include              |  4 +--
 tests/test-xbzrle.c                 |  4 +--
 22 files changed, 285 insertions(+), 47 deletions(-)
 create mode 100644 include/qemu/pmem.h
 create mode 100644 stubs/pmem.c

-- 
2.14.1

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2018-04-02  1:43 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-28  7:25 [Qemu-devel] [PATCH v4 0/8] nvdimm: guarantee persistence of QEMU writes to persistent memory Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 1/8] memory, exec: switch file ram allocation functions to 'flags' parameters Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 2/8] hostmem-file: add the 'pmem' option Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 3/8] configure: add libpmem support Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 4/8] mem/nvdimm: ensure write persistence to PMEM in label emulation Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 5/8] migration/ram: ensure write persistence on loading zero pages to PMEM Haozhong Zhang
2018-03-29 18:59   ` Dr. David Alan Gilbert
2018-04-02  1:42     ` Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 6/8] migration/ram: ensure write persistence on loading normal " Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 7/8] migration/ram: ensure write persistence on loading compressed " Haozhong Zhang
2018-02-28  7:25 ` [Qemu-devel] [PATCH v4 8/8] migration/ram: ensure write persistence on loading xbzrle " Haozhong Zhang
2018-02-28  7:31 ` [Qemu-devel] [PATCH v4 0/8] nvdimm: guarantee persistence of QEMU writes to persistent memory Haozhong Zhang
2018-03-08  6:49 ` Haozhong Zhang
2018-03-12 15:39 ` Stefan Hajnoczi
2018-03-13  0:11   ` Haozhong Zhang
2018-03-13  9:36     ` Dr. David Alan Gilbert
2018-03-13 10:44     ` Stefan Hajnoczi
2018-03-29 19:12     ` Dr. David Alan Gilbert
2018-04-02  1:29       ` Haozhong Zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).