• Ross Zwisler's avatar
    libnvdimm, pmem: Do not flush power-fail protected CPU caches · 546eb031
    Ross Zwisler authored
    This commit:
    
    5fdf8e5b ("libnvdimm: re-enable deep flush for pmem devices via fsync()")
    
    intended to make sure that deep flush was always available even on
    platforms which support a power-fail protected CPU cache.  An unintended
    side effect of this change was that we also lost the ability to skip
    flushing CPU caches on those power-fail protected CPU cache.
    
    Fix this by skipping the low level cache flushing in dax_flush() if we have
    CPU caches which are power-fail protected.  The user can still override this
    behavior by manually setting the write_cache state of a namespace.  See
    libndctl's ndctl_namespace_write_cache_is_enabled(),
    ndctl_namespace_enable_write_cache() and
    ndctl_namespace_disable_write_cache() functions.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 5fdf8e5b ("libnvdimm: re-enable deep flush for pmem devices via fsync()")
    Signed-off-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    546eb031
region_devs.c 29.2 KB