common/rc: fix detection of device-mapper/persistent memory incompatibility
authorDarrick J. Wong <>
Tue, 2 Mar 2021 23:22:50 +0000 (15:22 -0800)
committerEryu Guan <>
Sun, 7 Mar 2021 16:36:20 +0000 (00:36 +0800)
In commit fc7b3903, we tried to make _require_dm_target smart enough to
_notrun tests that require a device mapper target that isn't compatible
with "DAX".  However, as of this writing, the incompatibility stems from
device mapper's unwillingness to switch access modes when running atop
DAX (persistent memory) devices, and has nothing to do with the
filesystem mount options.

Since filesystems supporting DAX don't universally require "dax" in the
mount options to enable that functionality, switch the test to query
sysfs to see if the scratch device supports DAX.

Fixes: fc7b3903 ("dax/dm: disable testing on devices that don't support dax")
Signed-off-by: Darrick J. Wong <>
Reviewed-by: Chandan Babu R <>
Reviewed-by: Christoph Hellwig <>
Signed-off-by: Eryu Guan <>

index dbd91a3..0ce3cb0 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -1889,7 +1889,8 @@ _require_dm_target()
        _require_sane_bdev_flush $SCRATCH_DEV
        _require_command "$DMSETUP_PROG" dmsetup
-       _normalize_mount_options | egrep -q "dax(=always| |$)"
+       _normalize_mount_options | egrep -q "dax(=always| |$)" || \
+                       test -e "/sys/block/$(_short_dev $SCRATCH_DEV)/dax"
        if [ $? -eq 0 ]; then
                case $target in