common/xfs: Add require_xfs_db_write_array function
authoryang xu <xuyang.jy@cn.fujitsu.com>
Tue, 17 Apr 2018 06:11:40 +0000 (14:11 +0800)
committerEryu Guan <guaneryu@gmail.com>
Sun, 22 Apr 2018 10:44:17 +0000 (18:44 +0800)
xfsprogs commit 4222d00("db: write via array indexing doesn't
work") fixes a bug that xfs_db write can't support array indexing.
This function will check whether the bug is fixed on the current
xfsprogs.

xfs/444 applies the function, and skips if this bug exists.

Signed-off-by: yang xu <xuyang.jy@cn.fujitsu.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/xfs
tests/xfs/444

index 3169f8710dd706c9df3b0376280db5200c252bc8..e0bc3f43d3c5d86805c245cdf97f3afd235bac6f 100644 (file)
@@ -701,3 +701,23 @@ _scratch_xfs_set_sb_field()
 {
        _scratch_xfs_set_metadata_field "$1" "$2" "sb 0"
 }
+
+# Before xfsprogs commit 4222d000ed("db: write via array indexing doesn't
+# work"), xfs_db command to write a specific AGFL index doesn't work. It's a
+# bug in a diagnostic tool that is only used by XFS developers as a test
+# infrastructure, so it's fine to treat it as a infrastructure dependency as
+# all other _require rules.
+_require_xfs_db_write_array()
+{
+       local supported=0
+
+       _require_test
+       touch $TEST_DIR/$seq.img
+       $MKFS_XFS_PROG -d file,name=$TEST_DIR/$seq.img,size=512m >/dev/null 2>&1
+       $XFS_DB_PROG -x -c "agfl 0" -c "write bno[32] 78" $TEST_DIR/$seq.img \
+               >/dev/null 2>&1
+       $XFS_DB_PROG -x -c "agfl 0" -c "print bno[32]" $TEST_DIR/$seq.img \
+               | grep -q "bno\[32\] = 78" && supported=1
+       rm -f $TEST_DIR/$seq.img
+       [ $supported -eq 0 ] && _notrun "xfs_db write can't support array"
+}
index 141be523f8154962f00e39da3337b982432b0a56..9700422be69a38bcdfc469012c5dfbb2101b0c57 100755 (executable)
@@ -54,6 +54,7 @@ _supported_os Linux
 _require_check_dmesg
 _require_scratch
 _require_test_program "punch-alternating"
+_require_xfs_db_write_array
 
 # This is only a v5 filesystem problem
 _require_scratch_xfs_crc