[PATCH v2 1/6] common/rc: Introduce new helpers for DAX mount options and FS_XFLAG_DAX

Xiao Yang
2020-06-17T09:48:25Z

From: Xiao Yang <yangx.jy@cn.fujitsu.com>

1) _require_scratch_dax_mountopt() checks both old and new DAX mount option
2) _require_scratch_dax_iflag() checks FS_XFLAG_DAX

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
common/rc | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

diff --git a/common/rc b/common/rc
index a6967831..ec7c19e4 100644
--- a/common/rc
+++ b/common/rc
@@ -3188,6 +3188,41 @@ _require_scratch_dax()
_scratch_unmount
}

+_require_scratch_dax_mountopt()
+{
+ local mountopt=$1
+ local output
+
+ _require_scratch
+ _scratch_mkfs > /dev/null 2>&1
+ _try_scratch_mount -o "$mountopt" || \
+ _notrun "mount $SCRATCH_DEV with $mountopt failed"
+
+ output=$(_fs_options $SCRATCH_DEV)
+
+ # For new dax mount option, /proc/mounts shows different outputs if we
+ # mount with -o dax=inode on ext4 and xfs so skip checking it.
+ # /proc/mounts shows 'dax=inode' on ext4 but shows nothing on xfs.
+ if [ "$mountopt" != "dax=inode" ]; then
+ echo $output | grep -qw "$mountopt" || \
+ _notrun "$SCRATCH_DEV $FSTYP does not support -o $mountopt"
+ fi
+
+ # For new dax mount option, /proc/mounts shows "dax=never" if we
+ # mount with -o dax on xfs and underlying device doesn't support dax.
+ if [ "$mountopt" = "dax" ]; then
+ echo $output | grep -qw "dax=never" && \
+ _notrun "$SCRATCH_DEV $FSTYP does not support -o $mountopt"
+ fi
+
+ _scratch_unmount
+}
+
+_require_scratch_dax_iflag()
+{
+ _require_xfs_io_command "chattr" "x"
+}
+
# Does norecovery support by this fs?
_require_norecovery()
{
--
2.21.0