• Marko Mäkelä's avatar
    MDEV-33447: libpmem is not available in RHEL 8 · 3f9f5ca4
    Marko Mäkelä authored
    Because the Red Hat Enterprise Linux 8 core repository does not include
    libpmem, let us implement the necessary subset ourselves.
    
    pmem_persist(): Implement for 64-bit x86, ARM, POWER, RISC-V, Loongarch
    in a way that should be compatible with the https://github.com/pmem/pmdk/
    implementation of pmem_persist().
    
    The CMake option WITH_INNODB_PMEM can be used for enabling or disabling
    this interface at compile time. By default, it is enabled on all applicable
    systems that are covered by our CI system.
    
    Note: libpmem had not been previously enabled for Loongarch in our
    Debian packaging. It was enabled for RISC-V, but we will not enable it
    by default on RISC-V or Loongarch because we lack CI coverage.
    
    The generated code for x86_64 was reviewed and tested on two
    Intel implementations: one that only supports clflush, and
    another that supports both clflushopt and clwb.
    
    The generated machine code was also reviewed on https://godbolt.org
    using various compiler versions. Godbolt helpfully includes an option
    to compile to binary code and display the encoding, which was
    useful on POWER.
    
    Reviewed by: Vladislav Vaintroub
    3f9f5ca4
log0log.cc 36.1 KB