Skip to content

PMDK Version 1.5

Compare
Choose a tag to compare
@marcinslusarz marcinslusarz released this 26 Oct 16:18
· 4302 commits to master since this release

This release has had two major focus areas - performance and RAS
(Reliability, Availability and Serviceability). Beyond that, it introduces
new APIs, new tools and many other improvements. As a side effect
of performance optimizations, the libpmemobj on-media layout had to be
changed, which means that old pools have to be converted using pmdk-convert.
libpmemcto experiment has been finished and removed from the tree.

For more details, please see http://pmem.io/2018/10/22/release-1-5.html.

New features:

  • common: unsafe shutdown detection (SDS)
  • common: detection and repair of uncorrectable memory errors (bad blocks)
  • pool: new "feature" subcommand for enabling and disabling detection of
    unsafe shutdown and uncorrectable memory errors
  • common: auto flush detection on Windows (on Linux since 1.4)
  • pmreorder: new tool for verification of persistent memory algorithms
  • obj: new on media layout
  • pmem/obj: new flexible memcpy|memmove|memset API
  • obj: new flushing APIs: pmemobj_xpersist, pmemobj_xflush (PMEMOBJ_F_RELAXED)
  • rpmem: new flag RPMEM_PERSIST_RELAXED for rpmem_persist
  • obj: lazily initialized volatile variables (pmemobj_volatile) (EXPERIMENTAL)
  • obj: allocation classes with alignment
  • obj: new action APIs: pmemobj_defer_free, POBJ_XRESERVE_NEW,
    POBJ_XRESERVE_ALLOC
  • blk/log: new "ctl" API

Optimizations:

  • obj: major performance improvements for AEP NVDIMMs
  • obj: better space utilization for small allocations
  • common: call msync only on one page for deep drain

Other changes:

Bug fixes:

  • obj: fix type numbers for pmemobj_list_insert_new
  • pmem: fix inconsistency in pmem_is_pmem
  • common: fix windows mmap destruction
  • daxio: fix checking and adjusting length
  • common: fix long paths support on Windows