Introduce _require_inject_f2fs_command() to check whether inject.f2fs
supports specific metaarea and member parameters.

Meanwhile, let's check inject.f2fs requirement inside
_require_inject_f2fs_command() for cleanup.

Cc: Jaegeuk Kim <[email protected]>
Signed-off-by: Chao Yu <[email protected]>
---
 common/f2fs    | 27 +++++++++++++++++++++++++++
 tests/f2fs/009 |  2 +-
 tests/f2fs/012 |  2 +-
 tests/f2fs/019 |  2 +-
 tests/f2fs/020 |  2 +-
 tests/f2fs/022 |  2 +-
 6 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/common/f2fs b/common/f2fs
index 4d0d688b..82d3102e 100644
--- a/common/f2fs
+++ b/common/f2fs
@@ -69,3 +69,30 @@ _check_f2fs_filesystem()
 
     return 0
 }
+
+# check that inject.f2fs supports to inject specific field in specific meta 
area
+_require_inject_f2fs_command()
+{
+       _require_command "$F2FS_INJECT_PROG" inject.f2fs
+
+       if [ $# -ne 2 ]; then
+               echo "Usage: _require_inject_f2fs_command metaarea member" 1>&2
+               _exit 1
+       fi
+       metaarea=$1
+       member=$2
+
+       case $metaarea in
+       sb|cp|nat|sit)
+               val=0
+               ;;
+       ssa|node|dent)
+               ;;
+       *)
+               _notrun "unsupport metaarea: $metaarea"
+               ;;
+       esac
+
+       $F2FS_INJECT_PROG "--$metaarea" "$val" "-h" | grep "$member:" > 
/dev/null || \
+               _notrun "--$metaarea --mb $member support is missing"
+}
diff --git a/tests/f2fs/009 b/tests/f2fs/009
index 7333d484..4c179f2d 100755
--- a/tests/f2fs/009
+++ b/tests/f2fs/009
@@ -12,7 +12,7 @@
 _begin_fstest auto quick
 
 _require_scratch
-_require_command "$F2FS_INJECT_PROG" inject.f2fs
+_require_inject_f2fs_command node i_links
 _require_command "$(type -P socket)" socket
 
 _fixed_by_git_commit f2fs-tools 958cd6e \
diff --git a/tests/f2fs/012 b/tests/f2fs/012
index 7438d9ce..53d54bf6 100755
--- a/tests/f2fs/012
+++ b/tests/f2fs/012
@@ -20,7 +20,7 @@ _fixed_by_kernel_commit 91b587ba79e1 \
 export LC_ALL=C.UTF-8
 _require_scratch_nocheck
 _require_command "$F2FS_IO_PROG" f2fs_io
-_require_command "$F2FS_INJECT_PROG" inject.f2fs
+_require_inject_f2fs_command dent d_hash
 
 #check whether f2fs supports "lookup_mode=x" mount option
 mntopt=""
diff --git a/tests/f2fs/019 b/tests/f2fs/019
index 2307bd96..a6e6e38c 100755
--- a/tests/f2fs/019
+++ b/tests/f2fs/019
@@ -18,7 +18,7 @@ _fixed_by_kernel_commit 77de19b6867f \
        "f2fs: fix to avoid out-of-boundary access in dnode page"
 
 _require_scratch_nocheck
-_require_command "$F2FS_INJECT_PROG" inject.f2fs
+_require_inject_f2fs_command node addr
 
 # remove all mkfs options to avoid layout change of on-disk inode
 export MKFS_OPTIONS=""
diff --git a/tests/f2fs/020 b/tests/f2fs/020
index 38bc6582..a6933134 100755
--- a/tests/f2fs/020
+++ b/tests/f2fs/020
@@ -20,7 +20,7 @@ _fixed_by_kernel_commit 061cf3a84bde \
        "f2fs: fix to do sanity check on ino and xnid"
 
 _require_scratch_nocheck
-_require_command "$F2FS_INJECT_PROG" inject.f2fs
+_require_inject_f2fs_command node i_xattr_nid
 _require_attrs user
 
 # remove all mkfs options to avoid layout change of on-disk inode
diff --git a/tests/f2fs/022 b/tests/f2fs/022
index ed3b4f2b..48a8386b 100755
--- a/tests/f2fs/022
+++ b/tests/f2fs/022
@@ -19,7 +19,7 @@ _fixed_by_kernel_commit xxxxxxxxxxxx \
        "f2fs: fix to do sanity check on node footer for non inode dnode"
 
 _require_scratch_nocheck
-_require_command "$F2FS_INJECT_PROG" inject.f2fs
+_require_inject_f2fs_command node i_nid
 
 # remove all mkfs options to avoid layout change of on-disk inode
 export MKFS_OPTIONS=""
-- 
2.40.1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to