On 7/5/25 02:10, Zorro Lang wrote: > On Wed, Jul 02, 2025 at 07:02:04PM +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 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> >> --- >> tests/f2fs/015 | 141 ++++++++++++++++++++++++++++++ >> tests/f2fs/015.out | 207 +++++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 348 insertions(+) >> create mode 100755 tests/f2fs/015 >> create mode 100644 tests/f2fs/015.out >> >> diff --git a/tests/f2fs/015 b/tests/f2fs/015 >> new file mode 100755 >> index 00000000..86f0ef9e >> --- /dev/null >> +++ b/tests/f2fs/015 >> @@ -0,0 +1,141 @@ >> +#! /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/ all f2fs supported mount option and their combination. >> +# >> +. ./common/preamble >> +_begin_fstest auto quick > ^^^^^ > mount
Will update. > >> +_require_kernel_config CONFIG_F2FS_FS_XATTR >> +_require_kernel_config CONFIG_F2FS_FS_POSIX_ACL >> +_require_kernel_config CONFIG_F2FS_FAULT_INJECTION >> +_require_kernel_config CONFIG_F2FS_FS_COMPRESSION >> +_require_kernel_config CONFIG_F2FS_FS_LZO >> +_require_kernel_config CONFIG_F2FS_FS_LZORLE >> +_require_kernel_config CONFIG_F2FS_FS_LZ4 >> +_require_kernel_config CONFIG_F2FS_FS_LZ4HC >> +_require_kernel_config CONFIG_F2FS_FS_ZSTD > > Hmm... I think these requirements might cause this test case be _notrun > from lots of Linux distributions, except the kernel is built for testing > manually :) Yeah, but this testcase just relies on those options, and it will be too trivial to split them to separated testcases? :P > >> +_require_scratch >> + >> +options=( >> +# mount_option mkfs_option >> + "background_gc=on" "" \ >> + "background_gc=off" "" \ >> + "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" "extra,flexible_inline_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" "" \ >> + "compress_algorithm=lzo" "extra,compression" \ >> + "compress_algorithm=lz4" "extra,compression" \ >> + "compress_algorithm=zstd" "extra,compression" \ >> + "compress_algorithm=lzo-rle" "extra,compression" \ >> + "compress_algorithm=lz4:3" "extra,compression" \ >> + "compress_algorithm=ztsd:1" "extra,compression" \ >> + "compress_log_size=8" "extra,compression" \ >> + "compress_extension=so" "extra,compression" \ >> + "nocompress_extension=so" "extra,compression" \ >> + "nocompress_extension=*" "extra,compression" \ >> + "compress_extension=so,nocompress_extension=so" \ >> + "extra,compression" \ >> + "compress_chksum" "extra,compression" \ >> + "compress_mode=fs" "extra,compression" \ >> + "compress_mode=user" "extra,compression" \ >> + "compress_cache" "extra,compression" \ >> + "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))]}" >> + _scratch_mkfs "-O ${options[$((i+1))]}" >> $seqres.full > > _scratch_mkfs just return non-zero if it fails, so... Oh, thanks for your reminder, I guess we need to stop here if mkfs fails. Thanks, > >> + _try_scratch_mount "-o ${options[$i]}" >> $seqres.full 2>&1 > > ...do you still hope to try mount if mkfs fails? > > Thanks, > Zorro > >> + echo $? >> + _scratch_unmount >> +done >> + >> +status=0 >> +exit >> diff --git a/tests/f2fs/015.out b/tests/f2fs/015.out >> new file mode 100644 >> index 00000000..83e6ad51 >> --- /dev/null >> +++ b/tests/f2fs/015.out >> @@ -0,0 +1,207 @@ >> +QA output created by 015 >> +Option#0: background_gc=on : >> +0 >> +Option#2: background_gc=off : >> +0 >> +Option#4: background_gc=off : >> +0 >> +Option#6: background_gc=sync : >> +0 >> +Option#8: disable_roll_forward : >> +0 >> +Option#10: norecovery : >> +32 >> +Option#12: discard : >> +0 >> +Option#14: nodiscard : >> +0 >> +Option#16: no_heap : >> +0 >> +Option#18: heap : >> +0 >> +Option#20: user_xattr : >> +0 >> +Option#22: nouser_xattr : >> +0 >> +Option#24: acl : >> +0 >> +Option#26: noacl : >> +0 >> +Option#28: active_logs=2 : >> +0 >> +Option#30: active_logs=4 : >> +0 >> +Option#32: active_logs=6 : >> +0 >> +Option#34: disable_ext_identify : >> +0 >> +Option#36: inline_xattr : >> +0 >> +Option#38: noinline_xattr : >> +0 >> +Option#40: inline_xattr_size=400 : extra,flexible_inline_xattr >> +0 >> +Option#42: inline_xattr_size=400 : >> +0 >> +Option#44: inline_data : >> +0 >> +Option#46: noinline_dentry : >> +0 >> +Option#48: inline_dentry : >> +0 >> +Option#50: noinline_dentry : >> +0 >> +Option#52: flush_merge : >> +0 >> +Option#54: noflush_merge : >> +0 >> +Option#56: barrier : >> +0 >> +Option#58: nobarrier : >> +0 >> +Option#60: fastboot : >> +0 >> +Option#62: extent_cache : >> +0 >> +Option#64: noextent_cache : >> +0 >> +Option#66: data_flush : >> +0 >> +Option#68: reserve_root=32768 : >> +0 >> +Option#70: resuid=1000 : >> +0 >> +Option#72: resgid=1000 : >> +0 >> +Option#74: fault_injection=100 : >> +0 >> +Option#76: fault_type=4095 : >> +0 >> +Option#78: mode=adaptive : >> +0 >> +Option#80: mode=lfs : >> +0 >> +Option#82: mode=fragment:segment : >> +0 >> +Option#84: mode=fragment:block : >> +0 >> +Option#86: usrquota : >> +0 >> +Option#88: grpquota : >> +0 >> +Option#90: prjquota : >> +32 >> +Option#92: usrjquota=ausrquota : >> +32 >> +Option#94: grpjquota=agrpquota : >> +32 >> +Option#96: prjjquota=aprjquota : >> +32 >> +Option#98: jqfmt=vfsold : >> +0 >> +Option#100: jqfmt=vfsv0 : >> +0 >> +Option#102: jqfmt=vfsv1 : >> +0 >> +Option#104: usrjquota= : >> +0 >> +Option#106: grpjquota= : >> +0 >> +Option#108: prjjquota= : >> +0 >> +Option#110: quota : >> +0 >> +Option#112: noquota : >> +0 >> +Option#114: alloc_mode=reuse : >> +0 >> +Option#116: alloc_mode=default : >> +0 >> +Option#118: fsync_mode=posix : >> +0 >> +Option#120: fsync_mode=strict : >> +0 >> +Option#122: fsync_mode=nobarrier : >> +0 >> +Option#124: test_dummy_encryption : >> +0 >> +Option#126: test_dummy_encryption=v1 : >> +0 >> +Option#128: test_dummy_encryption=v2 : >> +0 >> +Option#130: checkpoint=enable : >> +0 >> +Option#132: checkpoint=disable : >> +0 >> +Option#134: checkpoint=disable:32768 : >> +0 >> +Option#136: checkpoint=disable:50% : >> +0 >> +Option#138: checkpoint_merge : >> +0 >> +Option#140: nocheckpoint_merge : >> +0 >> +Option#142: compress_algorithm=lzo : >> +0 >> +Option#144: compress_algorithm=lzo : extra,compression >> +0 >> +Option#146: compress_algorithm=lz4 : extra,compression >> +0 >> +Option#148: compress_algorithm=zstd : extra,compression >> +0 >> +Option#150: compress_algorithm=lzo-rle : extra,compression >> +0 >> +Option#152: compress_algorithm=lz4:3 : extra,compression >> +0 >> +Option#154: compress_algorithm=ztsd:1 : extra,compression >> +32 >> +Option#156: compress_log_size=8 : extra,compression >> +0 >> +Option#158: compress_extension=so : extra,compression >> +0 >> +Option#160: nocompress_extension=so : extra,compression >> +0 >> +Option#162: nocompress_extension=* : extra,compression >> +32 >> +Option#164: compress_extension=so,nocompress_extension=so : >> extra,compression >> +32 >> +Option#166: compress_chksum : extra,compression >> +0 >> +Option#168: compress_mode=fs : extra,compression >> +0 >> +Option#170: compress_mode=user : extra,compression >> +0 >> +Option#172: compress_cache : extra,compression >> +0 >> +Option#174: inlinecrypt : >> +0 >> +Option#176: atgc : >> +0 >> +Option#178: discard_unit=block : >> +0 >> +Option#180: discard_unit=segment : >> +0 >> +Option#182: discard_unit=section : >> +0 >> +Option#184: memory=normal : >> +0 >> +Option#186: memory=low : >> +0 >> +Option#188: age_extent_cache : >> +0 >> +Option#190: errors=panic : >> +0 >> +Option#192: errors=continue : >> +0 >> +Option#194: errors=remount-ro : >> +0 >> +Option#196: nat_bits : >> +0 >> +Option#198: atgc,mode=lfs : >> +32 >> +Option#200: ro,flush_merge : >> +32 >> +Option#202: rw : ro >> +0 >> +Option#204: 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