From: Ira Weiny <ira.we...@intel.com>

There is a conflict with the user visible statx bits 'mount root' and
'dax'.  The kernel is changing the dax bit to correct this conflict.[1]

Adjust _check_s_dax() to use the new bit.  Because DAX tests do not run
on root mounts, STATX_ATTR_MOUNT_ROOT should always be 0, therefore we
can allow either bit to indicate DAX and cover any kernel which may be
running.

[1] 
https://lore.kernel.org/lkml/3e28d2c7-fbe5-298a-13ba-dcd8fd504...@redhat.com/

Signed-off-by: Ira Weiny <ira.we...@intel.com>
---

I went ahead and used Christoph's suggestion regarding using both bits.

---
 common/rc | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/common/rc b/common/rc
index b5a504e0dcb4..322e682e5239 100644
--- a/common/rc
+++ b/common/rc
@@ -3221,11 +3221,24 @@ _check_s_dax()
        local exp_s_dax=$2
 
        local attributes=$($XFS_IO_PROG -c 'statx -r' $target | awk 
'/stat.attributes / { print $3 }')
-       if [ $exp_s_dax -eq 0 ]; then
-               (( attributes & 0x2000 )) && echo "$target has unexpected S_DAX 
flag"
-       else
-               (( attributes & 0x2000 )) || echo "$target doesn't have 
expected S_DAX flag"
-       fi
+
+       # The attribute bit value, STATX_ATTR_DAX (0x2000), conflicted with
+       # STATX_ATTR_MOUNT_ROOT.  Therefore, STATX_ATTR_DAX was changed to
+       # 0x00200000.
+       #
+       # Because DAX tests do not run on root mounts, STATX_ATTR_MOUNT_ROOT
+       # should always be 0, therefore we can allow either bit to indicate DAX
+       # and cover any kernel which may be running.
+
+        if [ $(( attributes & 0x00200000 )) -ne 0 ] || [ $(( attributes & 
0x2000 )) -ne 0 ]; then
+                if [ $exp_s_dax -eq 0 ]; then
+                        echo "$target has unexpected S_DAX flag"
+                fi
+        else
+                if [ $exp_s_dax -ne 0 ]; then
+                        echo "$target doesn't have expected S_DAX flag"
+                fi
+        fi
 }
 
 _check_xflag()
-- 
2.28.0.rc0.12.gb6a658bd00c9

Reply via email to