2018-03-20 06:42:29 +00:00
|
|
|
#!/bin/bash
|
|
|
|
# Regression test for mkfs.btrfs --rootdir with inline file extents
|
|
|
|
# For any large inline file extent, btrfs check could already report it
|
|
|
|
|
2023-04-19 15:08:41 +00:00
|
|
|
source "$TEST_TOP/common" || exit
|
2018-03-20 06:42:29 +00:00
|
|
|
|
|
|
|
check_prereq mkfs.btrfs
|
|
|
|
|
2023-04-11 23:51:28 +00:00
|
|
|
setup_root_helper
|
2018-03-20 06:42:29 +00:00
|
|
|
prepare_test_dev
|
|
|
|
|
2021-10-11 13:56:58 +00:00
|
|
|
tmp=$(_mktemp_dir mkfs-rootdir)
|
2018-03-20 06:42:29 +00:00
|
|
|
|
|
|
|
pagesize=$(getconf PAGESIZE)
|
|
|
|
create_file()
|
|
|
|
{
|
|
|
|
local size=$1
|
|
|
|
# Reuse size as filename
|
2018-03-21 15:42:28 +00:00
|
|
|
eval printf "%0.sx" {1..$size} > "$tmp/$size"
|
2018-03-20 06:42:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
test_mkfs_rootdir()
|
|
|
|
{
|
|
|
|
nodesize=$1
|
2019-06-05 17:09:38 +00:00
|
|
|
run_check_mkfs_test_dev --nodesize "$nodesize" --rootdir "$tmp"
|
2018-03-20 06:42:29 +00:00
|
|
|
run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Use power of 2 from 512 to 64K (maximum node size) as base file size
|
|
|
|
for i in 512 1024 2048 4096 8192 16384 32768; do
|
|
|
|
create_file $(($i - 102))
|
|
|
|
# 101 is the overhead size for max inline extent
|
|
|
|
create_file $(($i - 101))
|
|
|
|
create_file $(($i - 100))
|
|
|
|
|
|
|
|
create_file $(($i - 1))
|
|
|
|
create_file $i
|
|
|
|
create_file $(($i + 1))
|
|
|
|
done
|
|
|
|
|
|
|
|
for nodesize in 4096 8192 16384 32768 65536; do
|
2018-03-23 15:34:30 +00:00
|
|
|
if [ "$nodesize" -ge "$pagesize" ]; then
|
|
|
|
test_mkfs_rootdir "$nodesize"
|
2018-03-20 06:42:29 +00:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
rm -rf -- "$tmp"
|