]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
mke2fs.c (PRS): If the device size is too big to be expressed
authorTheodore Ts'o <tytso@mit.edu>
Fri, 28 Jan 2005 00:07:26 +0000 (19:07 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 28 Jan 2005 00:07:26 +0000 (19:07 -0500)
using a 1k blocksize, retry with a 4k blocksize.
(Addresses Sourceforge bug #1106631)

misc/ChangeLog
misc/mke2fs.c

index 1372ba642b84b0548ff4b9ffea71ad5c302ea6d2..65387a140e2e6ec2062ae26b2b8b8f5175bbf98c 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-27  Theodore Ts'o  <tytso@mit.edu>
+
+       * 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)
+
 2005-01-26  Theodore Ts'o  <tytso@mit.edu>
 
        * Makefile.in (uninstall): Make sure "make uninstall" removes
index c7afeae158e7524b9c064dd3440515219b2e9267..4a428e74f18bdc4c0409ad30fd3c3da4fecdf96b 100644 (file)
@@ -702,7 +702,7 @@ static void show_stats(ext2_filsys fs)
            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 @@ static void PRS(int argc, char *argv[])
        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(&param),
                                                &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"));