Package: pmdk / 1.10-2+deb11u1

Metadata

Package Version Patches format
pmdk 1.10-2+deb11u1 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
manpage debug packages.patch | (download)

doc/libpmem/libpmem.7.md | 5 5 + 0 - 0 !
doc/libpmemblk/libpmemblk.7.md | 5 5 + 0 - 0 !
doc/libpmemlog/libpmemlog.7.md | 5 5 + 0 - 0 !
doc/libpmemobj/libpmemobj.7.md | 5 5 + 0 - 0 !
doc/libpmempool/libpmempool.7.md | 5 5 + 0 - 0 !
doc/librpmem/librpmem.7.md | 5 5 + 0 - 0 !
6 files changed, 30 insertions(+)

 mention the -debug package split
 In Debian systems, the special debug libraries (with extra assertions,
 checks and logging, not suitable for production) are placed in a separate
 binary package with the "-debug" suffix. These are only meant to be
 installed when specific troubleshooting is required. Instructions for this
 troubleshooting are included in the library manpages, and we add a note
 explaining that the respective -debug package should be installed.
0001 pmem2 arm64 fix data loss on ARMv8.2 improper flushi.patch | (download)

src/libpmem2/aarch64/arm_cacheops.h | 13 10 + 3 - 0 !
src/libpmem2/aarch64/flush.h | 22 20 + 2 - 0 !
src/libpmem2/aarch64/init.c | 50 44 + 6 - 0 !
3 files changed, 74 insertions(+), 11 deletions(-)

 [patch] pmem2: arm64: fix data loss on armv8.2+ (improper flushing)

ARMv8.2 separates flush-for-coherency from flush-for-persistency as two
instructions: DC CVAC and DC CVAP.  It's the latter that is of interest
to us, and it is up to the processor to know where the Point of
Persistency happens to be.

The documentation is very clear, and this PIRL talk dispels all doubt:
https://www.youtube.com/watch?v=8QAuN8CL5Zg

On the other hand, I found no clear answer whether DC CVAC might be
enough on some pre-8.2 hardware.  There's no other option though (CVAC
is the heaviest flush available).  This question is probably moot as
pre-8.2 CPUs, while ubiquitous in dev boards, are gone in datacenter
gear.

0001 common fix missing sfence in non temporal memcpy.patch | (download)

src/core/util.h | 17 14 + 3 - 0 !
src/libpmem2/x86_64/memcpy/memcpy_nt_avx.c | 4 2 + 2 - 0 !
src/libpmem2/x86_64/memcpy/memcpy_nt_avx512f.c | 4 2 + 2 - 0 !
src/libpmem2/x86_64/memcpy/memcpy_nt_sse2.c | 4 2 + 2 - 0 !
src/libpmem2/x86_64/memset/memset_nt_avx.c | 4 2 + 2 - 0 !
src/libpmem2/x86_64/memset/memset_nt_avx512f.c | 4 2 + 2 - 0 !
src/libpmem2/x86_64/memset/memset_nt_sse2.c | 4 2 + 2 - 0 !
7 files changed, 26 insertions(+), 15 deletions(-)

 [patch] common: fix missing sfence in non-temporal memcpy

The implementation of hardware fencing for non-temporal
memcpy variants is done using a function pointer. Some
of those pointers are called "barrier" which unfortunately
overlaps with a function-like macro that's used for compiler
barriers. This meant that a compiler barrier was being used
instead of a hardware store barrier.

This patch changes the compiler barrier to a static inline
function called "compiler_barrier" to avoid name conflicts.

Fixes #5292
Reported-by: @Transpeptidase