mke2fs.c (PRS): If the device size is too big to be expressed
using a 1k blocksize, retry with a 4k blocksize.
(Addresses Sourceforge bug #1106631)
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index c7afeae..4a428e7 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -702,7 +702,7 @@
case EXT2_OS_LINUX: fputs("Linux", stdout); break;
case EXT2_OS_HURD: fputs("GNU/Hurd", stdout); break;
case EXT2_OS_MASIX: fputs ("Masix", stdout); break;
- case EXT2_OS_FREEBSD: fputs ("FerrBSD", stdout); break;
+ case EXT2_OS_FREEBSD: fputs ("FreeBSD", stdout); break;
case EXT2_OS_LITES: fputs ("Lites", stdout); break;
default: fputs(_("(unknown os)"), stdout);
}
@@ -1252,10 +1252,20 @@
if (noaction && param.s_blocks_count) {
dev_size = param.s_blocks_count;
retval = 0;
- } else
+ } else {
+ retry:
retval = ext2fs_get_device_size(device_name,
EXT2_BLOCK_SIZE(¶m),
&dev_size);
+ if ((retval == EFBIG) &&
+ (blocksize == 0) &&
+ (param.s_log_block_size == 0)) {
+ param.s_log_block_size = 2;
+ blocksize = 4096;
+ goto retry;
+ }
+ }
+
if (retval && (retval != EXT2_ET_UNIMPLEMENTED)) {
com_err(program_name, retval,
_("while trying to determine filesystem size"));