Bug 14196

Summary: when using raspberrypicm4io_64_defconfig, make fails with mkfs.ext4: No such file or directory while trying to determine filesystem size
Product: buildroot Reporter: Leon de Rooij <leon>
Component: OtherAssignee: Yann E. MORIN <yann.morin.1998>
Status: RESOLVED FIXED    
Severity: normal CC: buildroot, havran.jan, yann.morin.1998
Priority: P5    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Host: Target:
Build:
Attachments: patch fs/ext2/ext2.mk to touch file that'll contain filesystem

Description Leon de Rooij 2021-09-05 11:16:01 UTC
Created attachment 9086 [details]
patch fs/ext2/ext2.mk to touch file that'll contain filesystem

After using raspberrypicm4io_64_defconfig, then doing make, the build process ends as follows:

...
printf '   \n' >> /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/fakeroot
printf '   \n' >> /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/fakeroot
printf '        rm -f /home/ldr/src/buildroot/output/images/rootfs.ext2\n       /home/ldr/src/buildroot/output/host/sbin/mkfs.ext4 -d /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/target -r 1 -N 0 -m 5 -L "rootfs" -O ^64bit /home/ldr/src/buildroot/output/images/rootfs.ext2 "120M" || { ret=$?; echo "*** Maybe you need to increase the filesystem size (BR2_TARGET_ROOTFS_EXT2_SIZE)" 1>&2; exit $ret; }\n' >> /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/fakeroot
chmod a+x /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/fakeroot
PATH="/home/ldr/src/buildroot/output/host/bin:/home/ldr/src/buildroot/output/host/sbin:/home/ldr/.asdf/shims:/opt/asdf-vm/bin:/usr/local/bin:/usr/bin:/var/lib/snapd/snap/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl" FAKEROOTDONTTRYCHOWN=1 /home/ldr/src/buildroot/output/host/bin/fakeroot -- /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/fakeroot
rootdir=/home/ldr/src/buildroot/output/build/buildroot-fs/ext2/target
table='/home/ldr/src/buildroot/output/build/buildroot-fs/full_devices_table.txt'
mke2fs 1.46.3 (27-Jul-2021)
mkfs.ext4: No such file or directory while trying to determine filesystem size
*** Maybe you need to increase the filesystem size (BR2_TARGET_ROOTFS_EXT2_SIZE)
make: *** [fs/ext2/ext2.mk:63: /home/ldr/src/buildroot/output/images/rootfs.ext2] Error 1

--

I can reproduce in commandline by just running:

/home/ldr/src/buildroot/output/host/sbin/mkfs.ext4 -d /home/ldr/src/buildroot/output/build/buildroot-fs/ext2/target -r 1 -N 0 -m 5 -L "rootfs" -O ^64bit /home/ldr/src/buildroot/output/images/rootfs.ext2 "120M"

--

so the mkfs.ext4 wants the file that will contain the filesystem to already exist, which it doesnt, becuase it's removed one command earlier.

--

I was able to fix my issue by adding a touch in fs/ext2/ext2.mk.

Please see attachment.

But not sure if this is a correct way to fix my issue.

Hope it helps.

Thanks,

Leon
Comment 1 Yann E. MORIN 2021-09-05 16:46:10 UTC
Leon, All,

Thanks the report. I can confirm indeed that e2fsprogs 1.46.3 now requirtes that
the file where to generate the filesystem must pre-exist. This is a regression in
2fsprogs itself.; indeed, I've tested 1.46.2 and 1.46.4, and both work without
the touch.

And indeed, the e2fsprogs commit53464654bd33 (mke2fs: fix creating a file system
image w/o a pre-existing file) states:

    By deferring the call to check_plausible() in commit
    942b00cb9d2f ("mke2fs: do not warn about a pre-existing partition
    table when using a non-zero offset") this behaviour was broken.

I'll try to see if we can cook up a backport of that commit for the 2021.08.x
branch. For master, a bump to 1.46.4 will fix the issue.

Regards,
Yann E. MORIN.
Comment 2 Leon de Rooij 2021-09-05 18:42:53 UTC
Hi Yann, thanks for the quick followup! :)

best regards,

Leon
Comment 3 Yann E. MORIN 2021-09-11 10:04:17 UTC
Leon, All,

Thanks for your report. We believe this issue has now been fixed with commit
https://git.buildroot.org/buildroot/commit/?id=4ad23552c6

Regards,
Yann E. MORIN.