Commit ca10cdb
f2fs-tools: increase overprovision finding speed
I think my optimization makes mkfs.f2fs faster in case of invalid volume size.
So with the commit user will get err faster.
Before start I suggest add debug printf() to `f2fs_fs.h` like this:
```
for (; candidate <= end; candidate += diff) {
reserved = get_reserved(sb, candidate);
ovp = (usable_main_segs - reserved) * candidate / 100;
MSG(0, "ovp=%f usable_main_segs=%u reserved=%u candidate=%f\n",
ovp, usable_main_segs, reserved, candidate); //debug printf()
if (ovp <= 0)
continue;
space = usable_main_segs - max((double)reserved, ovp) -
overprovision_segment_buffer(sb);
MSG(0, "space=%f max_space=%f\n", space, max_space); //debug printf()
if (max_space < space) {
max_space = space;
max_ovp = candidate;
}
}
```
Test instruction is based on "boot/grub2/readme.txt"
https://gitlab.com/buildroot.org/buildroot/-/blob/master/boot/grub2/readme.txt
You can use Ubuntu 24 or similar OS.
1. Create a disk image
```
cd /tmp
dd if=/dev/zero of=disk.img bs=1M count=32
```
2. Partition it with GPT partitions usinig `cgdisk disk.img` or
```
parted --script disk.img mklabel gpt mkpart primary 1MiB 31MiB
```
3. Setup loop device and loop partitions
```
loop_dev=$(sudo losetup -f --show disk.img)
sudo partx -a "$loop_dev"
```
5. Prepare the root partition
```
sudo mkfs.f2fs -f -l mylable123 -i -O extra_attr,inode_checksum,\
sb_checksum,compression -e raw -E bin "$loop_dev"
```
6. Cleanup loop device
```
partx -d "$loop_dev"
losetup -d "$loop_dev"
```
In log you can see that for ovp==0.0 space calculation looks not necessary...
```
a@Linux:~$ sudo mkfs.f2fs -f -l mylable123 -i -O extra_attr,inode_checksum,\
sb_checksum,compression -e raw -E bin "$loop_dev"
F2FS-tools: mkfs.f2fs Ver: 1.16.0 (2025-05-06)
Info: Debug level = 0
Info: Add new cold file extension list
Info: Add new hot file extension list
Info: Label = mylable123
Info: Trim is enabled
Info: Enable Compression
Info: Segments per section = 1
Info: Sections per zone = 1
Info: sector size = 512
Info: total sectors = 65536 (32 MB)
Info: zone aligned segment0 blkaddr: 512
ovp=429496728.700000 usable_main_segs=8 reserved=17 candidate=10.000000
space=-429496726.700000 max_space=0.000000
ovp=644245093.650000 usable_main_segs=8 reserved=13 candidate=15.000000
space=-644245091.650000 max_space=0.000000
ovp=858993458.400000 usable_main_segs=8 reserved=12 candidate=20.000000
space=-858993456.400000 max_space=0.000000
ovp=1073741823.250000 usable_main_segs=8 reserved=11 candidate=25.000000
space=-1073741821.250000 max_space=0.000000
ovp=1288490188.200000 usable_main_segs=8 reserved=10 candidate=30.000000
space=-1288490186.200000 max_space=0.000000
ovp=1503238553.250000 usable_main_segs=8 reserved=9 candidate=35.000000
space=-1503238551.250000 max_space=0.000000
ovp=1717986918.000000 usable_main_segs=8 reserved=9 candidate=40.000000
space=-1717986916.000000 max_space=0.000000
ovp=1932735282.750000 usable_main_segs=8 reserved=9 candidate=45.000000
space=-1932735280.750000 max_space=0.000000
ovp=2147483647.500000 usable_main_segs=8 reserved=9 candidate=50.000000
space=-2147483645.500000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=55.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=60.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=65.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=70.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=75.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=80.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=85.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=90.000000
space=-6.000000 max_space=0.000000
ovp=0.000000 usable_main_segs=8 reserved=8 candidate=95.000000
space=-6.000000 max_space=0.000000
Error: Device size is not sufficient for F2FS volume
Error: Failed to prepare a super block!!!
Error: Could not format the device!!!
```
Signed-off-by: Cherniaev Andrei <dungeonlords789@naver.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>1 parent 2eb88a5 commit ca10cdb
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1892 | 1892 | | |
1893 | 1893 | | |
1894 | 1894 | | |
1895 | | - | |
| 1895 | + | |
1896 | 1896 | | |
1897 | 1897 | | |
1898 | 1898 | | |
| |||
0 commit comments