aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxiao yang <yangx.jy@cn.fujitsu.com>2018-01-16 15:26:55 +0800
committerEryu Guan <eguan@redhat.com>2018-01-19 11:01:44 +0800
commite33b0351dae375105680dd70582a43ad89ac4bb8 (patch)
tree0ddefae2d12eee52d48d5958333942512d34cf57
parent1ee97207dce2db8c36f592c6853d19a7c010e3d1 (diff)
downloadxfstests-e33b0351dae375105680dd70582a43ad89ac4bb8.tar.gz
common/xfs: Check if write supports [-c|-d] option in xfs_db
Make sure _scratch_xfs_set_metadata_field() can be used on an old xfsprogs-dev(e.g. v3.1.1). The "-d" option was introduced since xfsprogs-dev v4.7.0 by commit 86769b3 ("xfs_db: allow recalculating CRCs on invalid metadata"). The special argument "--" is only used to end option-scanning in getopt(). getopt() was introduced since xfsprogs-dev v3.2.3 by commit c9f5e3d ("xfs_db: Allow writes of corrupted data")'. Signed-off-by: xiao yang <yangx.jy@cn.fujitsu.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
-rw-r--r--common/xfs7
1 files changed, 5 insertions, 2 deletions
diff --git a/common/xfs b/common/xfs
index 45b84a04f4..ab58364079 100644
--- a/common/xfs
+++ b/common/xfs
@@ -658,8 +658,11 @@ _scratch_xfs_set_metadata_field()
for arg in "$@"; do
cmds+=("-c" "${arg}")
done
- _scratch_xfs_db -x "${cmds[@]}" -c "write -d ${key} -- ${value}"
- echo
+
+ local wr_cmd="write"
+ _scratch_xfs_db -x -c "help write" | egrep -q "(-c|-d)" && value="-- ${value}"
+ _scratch_xfs_db -x -c "help write" | egrep -q "(-d)" && wr_cmd="${wr_cmd} -d"
+ _scratch_xfs_db -x "${cmds[@]}" -c "${wr_cmd} ${key} ${value}"
}
_scratch_xfs_get_sb_field()