From: Denys Vlasenko Date: Wed, 21 Oct 2009 21:23:55 +0000 (+0200) Subject: mkfs_ext2: make sure we extend the image to requested size X-Git-Tag: 1_16_0~346 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=010fb00708fd53159c32bd5da7052845f1ebff60;p=oweals%2Fbusybox.git mkfs_ext2: make sure we extend the image to requested size Signed-off-by: Denys Vlasenko --- diff --git a/util-linux/mkfs_ext2.c b/util-linux/mkfs_ext2.c index 06858ef7b..7191a5f55 100644 --- a/util-linux/mkfs_ext2.c +++ b/util-linux/mkfs_ext2.c @@ -236,6 +236,13 @@ int mkfs_ext2_main(int argc UNUSED_PARAM, char **argv) // open the device, get size in kbytes if (argv[1]) { kilobytes = xatoull(argv[1]); + // seek past end fails on block devices but works on files + if (lseek(fd, kilobytes * 1024 - 1, SEEK_SET) != (off_t)-1) { + xwrite(fd, "", 1); // file grows if needed + } + //else { + // bb_error_msg("warning, block device is smaller"); + //} } else { kilobytes = (uoff_t)xlseek(fd, 0, SEEK_END) / 1024; } @@ -610,7 +617,7 @@ int mkfs_ext2_main(int argc UNUSED_PARAM, char **argv) dir = (struct ext2_dir *)buf; // dump 2nd+ blocks of "/lost+found" - STORE_LE(dir->rec_len1, blocksize); // e2fsck 1.41.4 compat + STORE_LE(dir->rec_len1, blocksize); // e2fsck 1.41.4 compat (1.41.9 does not need this) for (i = 1; i < lost_and_found_blocks; ++i) PUT((uint64_t)(FETCH_LE32(gd[0].bg_inode_table) + inode_table_blocks + 1+i) * blocksize, buf, blocksize);