On Mon, Aug 04, 2025 at 07:40:14PM +0800, Chao Yu wrote:
> As f2fs changes to use new mount APIs, let's add a new testcase
> to check mount result for all f2fs supported common mount options
> and their combinations, in order to detect any inconsistency during
> mount.
> 
> Cc: Jaegeuk Kim <jaeg...@kernel.org>
> Signed-off-by: Chao Yu <c...@kernel.org>
> ---

I forgot this patchset. This version is good to me,

Reviewed-by: Zorro Lang <zl...@redhat.com>

>  common/rc          |   3 +
>  tests/f2fs/015     | 121 +++++++++++++++++++++++++++++++
>  tests/f2fs/015.out | 173 +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 297 insertions(+)
>  create mode 100755 tests/f2fs/015
>  create mode 100644 tests/f2fs/015.out
> 
> diff --git a/common/rc b/common/rc
> index ff5df203..81587dad 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -876,6 +876,9 @@ _test_mkfs()
>      ext2|ext3|ext4)
>       $MKFS_PROG -t $FSTYP -- -F $MKFS_OPTIONS $* $TEST_DEV
>       ;;
> +    f2fs)
> +     $MKFS_PROG -t $FSTYP -- -f $MKFS_OPTIONS $* $TEST_DEV
> +     ;;
>      xfs)
>       _test_options mkfs
>       $MKFS_PROG -t $FSTYP -- -f $TEST_OPTIONS $MKFS_OPTIONS $* $TEST_DEV
> diff --git a/tests/f2fs/015 b/tests/f2fs/015
> new file mode 100755
> index 00000000..73ac3d82
> --- /dev/null
> +++ b/tests/f2fs/015
> @@ -0,0 +1,121 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2025 Chao Yu.  All Rights Reserved.
> +#
> +# FS QA Test No. f2fs/015
> +#
> +# This testcase tries to check stability of mount result
> +# w/ common mount option and their combination.
> +#
> +. ./common/preamble
> +_begin_fstest auto quick mount
> +_require_kernel_config CONFIG_F2FS_FS_XATTR
> +_require_kernel_config CONFIG_F2FS_FS_POSIX_ACL
> +_require_kernel_config CONFIG_F2FS_FAULT_INJECTION
> +
> +options=(
> +#    mount_option                    mkfs_option
> +     "background_gc=on"              ""                      \
> +     "background_gc=off"             ""                      \
> +     "background_gc=sync"            ""                      \
> +     "disable_roll_forward"          ""                      \
> +     "norecovery"                    ""                      \
> +     "discard"                       ""                      \
> +     "nodiscard"                     ""                      \
> +     "no_heap"                       ""                      \
> +     "heap"                          ""                      \
> +     "user_xattr"                    ""                      \
> +     "nouser_xattr"                  ""                      \
> +     "acl"                           ""                      \
> +     "noacl"                         ""                      \
> +     "active_logs=2"                 ""                      \
> +     "active_logs=4"                 ""                      \
> +     "active_logs=6"                 ""                      \
> +     "disable_ext_identify"          ""                      \
> +     "inline_xattr"                  ""                      \
> +     "noinline_xattr"                ""                      \
> +     "inline_xattr_size=400"         ""                      \
> +     "inline_data"                   ""                      \
> +     "noinline_dentry"               ""                      \
> +     "inline_dentry"                 ""                      \
> +     "noinline_dentry"               ""                      \
> +     "flush_merge"                   ""                      \
> +     "noflush_merge"                 ""                      \
> +     "barrier"                       ""                      \
> +     "nobarrier"                     ""                      \
> +     "fastboot"                      ""                      \
> +     "extent_cache"                  ""                      \
> +     "noextent_cache"                ""                      \
> +     "data_flush"                    ""                      \
> +     "reserve_root=32768"            ""                      \
> +     "resuid=1000"                   ""                      \
> +     "resgid=1000"                   ""                      \
> +     "fault_injection=100"           ""                      \
> +     "fault_type=4095"               ""                      \
> +     "mode=adaptive"                 ""                      \
> +     "mode=lfs"                      ""                      \
> +     "mode=fragment:segment"         ""                      \
> +     "mode=fragment:block"           ""                      \
> +     "usrquota"                      ""                      \
> +     "grpquota"                      ""                      \
> +     "prjquota"                      ""                      \
> +     "usrjquota=ausrquota"           ""                      \
> +     "grpjquota=agrpquota"           ""                      \
> +     "prjjquota=aprjquota"           ""                      \
> +     "jqfmt=vfsold"                  ""                      \
> +     "jqfmt=vfsv0"                   ""                      \
> +     "jqfmt=vfsv1"                   ""                      \
> +     "usrjquota="                    ""                      \
> +     "grpjquota="                    ""                      \
> +     "prjjquota="                    ""                      \
> +     "quota"                         ""                      \
> +     "noquota"                       ""                      \
> +     "alloc_mode=reuse"              ""                      \
> +     "alloc_mode=default"            ""                      \
> +     "fsync_mode=posix"              ""                      \
> +     "fsync_mode=strict"             ""                      \
> +     "fsync_mode=nobarrier"          ""                      \
> +     "test_dummy_encryption"         ""                      \
> +     "test_dummy_encryption=v1"      ""                      \
> +     "test_dummy_encryption=v2"      ""                      \
> +     "checkpoint=enable"             ""                      \
> +     "checkpoint=disable"            ""                      \
> +     "checkpoint=disable:32768"      ""                      \
> +     "checkpoint=disable:50%"        ""                      \
> +     "checkpoint_merge"              ""                      \
> +     "nocheckpoint_merge"            ""                      \
> +     "compress_algorithm=lzo"        ""                      \
> +     "inlinecrypt"                   ""                      \
> +     "atgc"                          ""                      \
> +     "discard_unit=block"            ""                      \
> +     "discard_unit=segment"          ""                      \
> +     "discard_unit=section"          ""                      \
> +     "memory=normal"                 ""                      \
> +     "memory=low"                    ""                      \
> +     "age_extent_cache"              ""                      \
> +     "errors=panic"                  ""                      \
> +     "errors=continue"               ""                      \
> +     "errors=remount-ro"             ""                      \
> +     "nat_bits"                      ""                      \
> +     "atgc,mode=lfs"                 ""                      \
> +     "ro,flush_merge"                ""                      \
> +     "rw"                            "ro"                    \
> +     "norecovery,ro"                 ""                      \
> +)
> +
> +for ((i=0;i<${#options[@]};i=i+2))
> +do
> +     echo "Option#$i: ${options[$i]} : ${options[$((i+1))]}"
> +
> +     if [ "${options[$((i+1))]}" ]; then
> +             _scratch_mkfs "-O ${options[$((i+1))]}" >> $seqres.full || 
> _fail "mkfs failed"
> +     else
> +             _scratch_mkfs >> $seqres.full || _fail "mkfs failed"
> +     fi
> +     _try_scratch_mount "-o ${options[$i]}" >> $seqres.full 2>&1
> +     echo $?
> +     _scratch_unmount >> $seqres.full 2>&1
> +done
> +
> +status=0
> +exit
> diff --git a/tests/f2fs/015.out b/tests/f2fs/015.out
> new file mode 100644
> index 00000000..8d6712f0
> --- /dev/null
> +++ b/tests/f2fs/015.out
> @@ -0,0 +1,173 @@
> +QA output created by 015
> +Option#0: background_gc=on : 
> +0
> +Option#2: background_gc=off : 
> +0
> +Option#4: background_gc=sync : 
> +0
> +Option#6: disable_roll_forward : 
> +0
> +Option#8: norecovery : 
> +32
> +Option#10: discard : 
> +0
> +Option#12: nodiscard : 
> +0
> +Option#14: no_heap : 
> +0
> +Option#16: heap : 
> +0
> +Option#18: user_xattr : 
> +0
> +Option#20: nouser_xattr : 
> +0
> +Option#22: acl : 
> +0
> +Option#24: noacl : 
> +0
> +Option#26: active_logs=2 : 
> +0
> +Option#28: active_logs=4 : 
> +0
> +Option#30: active_logs=6 : 
> +0
> +Option#32: disable_ext_identify : 
> +0
> +Option#34: inline_xattr : 
> +0
> +Option#36: noinline_xattr : 
> +0
> +Option#38: inline_xattr_size=400 : 
> +0
> +Option#40: inline_data : 
> +0
> +Option#42: noinline_dentry : 
> +0
> +Option#44: inline_dentry : 
> +0
> +Option#46: noinline_dentry : 
> +0
> +Option#48: flush_merge : 
> +0
> +Option#50: noflush_merge : 
> +0
> +Option#52: barrier : 
> +0
> +Option#54: nobarrier : 
> +0
> +Option#56: fastboot : 
> +0
> +Option#58: extent_cache : 
> +0
> +Option#60: noextent_cache : 
> +0
> +Option#62: data_flush : 
> +0
> +Option#64: reserve_root=32768 : 
> +0
> +Option#66: resuid=1000 : 
> +0
> +Option#68: resgid=1000 : 
> +0
> +Option#70: fault_injection=100 : 
> +0
> +Option#72: fault_type=4095 : 
> +0
> +Option#74: mode=adaptive : 
> +0
> +Option#76: mode=lfs : 
> +0
> +Option#78: mode=fragment:segment : 
> +0
> +Option#80: mode=fragment:block : 
> +0
> +Option#82: usrquota : 
> +0
> +Option#84: grpquota : 
> +0
> +Option#86: prjquota : 
> +32
> +Option#88: usrjquota=ausrquota : 
> +32
> +Option#90: grpjquota=agrpquota : 
> +32
> +Option#92: prjjquota=aprjquota : 
> +32
> +Option#94: jqfmt=vfsold : 
> +0
> +Option#96: jqfmt=vfsv0 : 
> +0
> +Option#98: jqfmt=vfsv1 : 
> +0
> +Option#100: usrjquota= : 
> +0
> +Option#102: grpjquota= : 
> +0
> +Option#104: prjjquota= : 
> +0
> +Option#106: quota : 
> +0
> +Option#108: noquota : 
> +0
> +Option#110: alloc_mode=reuse : 
> +0
> +Option#112: alloc_mode=default : 
> +0
> +Option#114: fsync_mode=posix : 
> +0
> +Option#116: fsync_mode=strict : 
> +0
> +Option#118: fsync_mode=nobarrier : 
> +0
> +Option#120: test_dummy_encryption : 
> +0
> +Option#122: test_dummy_encryption=v1 : 
> +0
> +Option#124: test_dummy_encryption=v2 : 
> +0
> +Option#126: checkpoint=enable : 
> +0
> +Option#128: checkpoint=disable : 
> +0
> +Option#130: checkpoint=disable:32768 : 
> +0
> +Option#132: checkpoint=disable:50% : 
> +0
> +Option#134: checkpoint_merge : 
> +0
> +Option#136: nocheckpoint_merge : 
> +0
> +Option#138: compress_algorithm=lzo : 
> +0
> +Option#140: inlinecrypt : 
> +0
> +Option#142: atgc : 
> +0
> +Option#144: discard_unit=block : 
> +0
> +Option#146: discard_unit=segment : 
> +0
> +Option#148: discard_unit=section : 
> +0
> +Option#150: memory=normal : 
> +0
> +Option#152: memory=low : 
> +0
> +Option#154: age_extent_cache : 
> +0
> +Option#156: errors=panic : 
> +0
> +Option#158: errors=continue : 
> +0
> +Option#160: errors=remount-ro : 
> +0
> +Option#162: nat_bits : 
> +0
> +Option#164: atgc,mode=lfs : 
> +32
> +Option#166: ro,flush_merge : 
> +32
> +Option#168: rw : ro
> +0
> +Option#170: norecovery,ro : 
> +0
> -- 
> 2.49.0
> 



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to