From 5493085b46307a2d54f6275192f7648f7bf3d714 Mon Sep 17 00:00:00 2001 From: Hiro Tamada Date: Fri, 9 Jan 2026 18:06:05 -0500 Subject: [PATCH] fix: increase ext4 filesystem overhead from 20% to 50% The 20% overhead was insufficient for small filesystems with many files (like images with timezone data). ext4 requires significant space for superblock, group descriptors, inode tables, and directory entries. This caused mkfs.ext4 to fail with "Could not allocate block in ext2 filesystem" when converting images to disk format. Tested with Alpine + tzdata image which previously failed. --- lib/images/disk.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/images/disk.go b/lib/images/disk.go index 2391edfc..53378b49 100644 --- a/lib/images/disk.go +++ b/lib/images/disk.go @@ -116,8 +116,10 @@ func convertToExt4(rootfsDir, diskPath string) (int64, error) { return 0, fmt.Errorf("calculate dir size: %w", err) } - // Add 20% overhead for filesystem metadata, minimum 10MB - diskSizeBytes := sizeBytes + (sizeBytes / 5) + // Add 50% overhead for filesystem metadata, minimum 10MB + // ext4 needs significant overhead for superblock, group descriptors, inode tables, etc. + // 20% was insufficient for small filesystems with many files (like tzdata) + diskSizeBytes := sizeBytes + (sizeBytes / 2) const minSize = 10 * 1024 * 1024 // 10MB if diskSizeBytes < minSize { diskSizeBytes = minSize