From: Arnaud Mouiche Date: Thu, 17 Nov 2011 17:03:04 +0000 (+0100) Subject: small bug in mkfs.cramfs + patch X-Git-Tag: v2.21-rc1~162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8b472bfa73e07e333fbb1aa4abb64ec5a2b4810b;p=thirdparty%2Futil-linux.git small bug in mkfs.cramfs + patch mkfs.cramfs on version v2.17.2 has a small bug when dealing with very small filesystems. look at upstream code on git, and the issue is still here. ex: $ cd /tmp $ mkdir content $ echo hello > content/a $ echo hello > content/b $ mkfs.cramfs content content.cramfs not enough space allocated for ROM image (4090 allocated, 4096 used) Here is a patch for fixing (simply rounding to page size AFTER eleminating doubles). Signed-off-by: Arnaud Mouiche Signed-off-by: Karel Zak --- diff --git a/disk-utils/mkfs.cramfs.c b/disk-utils/mkfs.cramfs.c index 519363419c..e7a1de35d8 100644 --- a/disk-utils/mkfs.cramfs.c +++ b/disk-utils/mkfs.cramfs.c @@ -794,6 +794,9 @@ int main(int argc, char **argv) root_entry->size = parse_directory(root_entry, dirname, &root_entry->child, &fslen_ub); + /* find duplicate files */ + eliminate_doubles(root_entry,root_entry, &fslen_ub); + /* always allocate a multiple of blksize bytes because that's what we're going to write later on */ fslen_ub = ((fslen_ub - 1) | (blksize - 1)) + 1; @@ -808,9 +811,6 @@ int main(int argc, char **argv) fslen_ub = fslen_max; } - /* find duplicate files */ - eliminate_doubles(root_entry,root_entry, &fslen_ub); - /* TODO: Why do we use a private/anonymous mapping here followed by a write below, instead of just a shared mapping and a couple of ftruncate calls? Is it just to save us