Bug 2929

Summary: genext2fs: couldn't allocate a block (no free space)
Product: buildroot Reporter: Andy Gibbs <andyg1001>
Component: OtherAssignee: unassigned
Status: RESOLVED INVALID    
Severity: critical CC: buildroot, mathewss, yann.morin.1998
Priority: P5    
Version: unspecified   
Target Milestone: ---   
Hardware: Other   
OS: Linux   
Host: Target:
Build:

Description Andy Gibbs 2010-12-10 09:28:02 UTC
fs/ext2/genext2fs.sh is incorrectly calculating the size required to create an ext2 image file, and it seems to happen when the size of the image exceeds 500Mb (but I haven't done precise testing to determine this).

This is the command genext2fs.sh is using:

genext2fs -d /home/test/buildroot-2010.11/target -U /home/test/buildroot-2010.11/images/rootfs.ext2 -b 525096 -N 5242

du on the target directory returns 508712
find | wc -l in the target directory returns 4842

Modifying the call to genext2fs with -b 529712 (i.e. 508712+21000) makes an image without errors and e2fsck rootfs.ext2 tells me "4440/5720 files, 529506/529712 blocks", so it should be possible to create the image with 529506 blocks, but 21000 seems a good enough "guess".

Does this information help?  If you need further information or testing, let me know.

Thanks
Andy
Comment 1 Peter Korsgaard 2010-12-30 22:35:48 UTC
Hi,

I've implemented better ext2 size estimation in git (eeea3ea6a88a8) - Could you give it a try?
Comment 2 Sean Mathews 2012-07-07 03:36:58 UTC
 genext2fs presumes block sizes are 1024 but genext2fs.sh looks at the total blocks on the local file system where the block size may be different. In my case it was 4096 so this error shows up still in this case.
Comment 3 Yann E. MORIN 2013-05-26 14:21:11 UTC
Sean,

Estimating the number of blocks is done with a call to: 'du -k' where '-k' means 'assume 1KiB blocks' (see: man du). So your issue is probably /slightly/ different.

If you manage to reproduce this issue, please reopen this bug and report back with a bit more information: buildroot's .config file, host file system...

Regards,
Yann E. MORIN.