[PATCH v2] common/rc: add _require_blocks_in_file helper

Joanne Chang
2025-12-29T02:33:34Z

generic/735 attempts to create a file with nearly 2^32 blocks. However,
some filesystems have a maximum file block limit below this threshold.
For instance, F2FS is limited to approximately 2^30 blocks due to the
capacity of the inode. So add _require_blocks_in_file helper to skip the
test in such cases.

Signed-off-by: Joanne Chang <joannechien@google.com>
---
v1 -> v2:
- changed title from "generic/735: disable for f2fs"
- used a new helper function instead of _exclude_fs as Christoph Hellwig
suggested

common/rc | 16 ++++++++++++++++
tests/generic/735 | 1 +
2 files changed, 17 insertions(+)

diff --git a/common/rc b/common/rc
index c3cdc220..e92f4854 100644
--- a/common/rc
+++ b/common/rc
@@ -6120,6 +6120,22 @@ _require_file_attr_special()
fi
}

+# Require filesystem to accomodate enough blocks in a file
+_require_blocks_in_file()
+{
+ local blocks=$1
+
+ case $FSTYP in
+ f2fs)
+ if [ $blocks -gt 1057053439 ]; then
+ _notrun "$blocks blocks per file not supported on $FSTYP"
+ fi
+ ;;
+ *)
+ ;;
+ esac
+}
+
################################################################################
# make sure this script returns success
/bin/true
diff --git a/tests/generic/735 b/tests/generic/735
index 9bbdf3a1..2fbf125c 100755
--- a/tests/generic/735
+++ b/tests/generic/735
@@ -22,6 +22,7 @@ fi
_require_odirect
_require_xfs_io_command "falloc"
_require_xfs_io_command "finsert"
+_require_blocks_in_file $(( (1 << 32) - 1 ))

dev_size=$((80 * 1024 * 1024))
_scratch_mkfs_sized $dev_size >>$seqres.full 2>&1
--
2.52.0.322.g1dd061c0dc-goog