]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
Fix up mkfs.xfs which can create a corrupt filesystem with large block sizes.
authorBarry Naujok <bnaujok@sgi.com>
Fri, 1 Dec 2006 02:52:23 +0000 (02:52 +0000)
committerBarry Naujok <bnaujok@sgi.com>
Fri, 1 Dec 2006 02:52:23 +0000 (02:52 +0000)
Merge of master-melb:xfs-cmds:27594a by kenmcd.

doc/CHANGES
include/xfs_rtalloc.h
mkfs/xfs_mkfs.c

index a2d2708937d1aa060dbd80fab7a1e389b4e3a99a..59a4072262f0ea423519c7098843753deedf30d1 100644 (file)
@@ -3,6 +3,7 @@ xfsprogs-2.8.x
          Thanks to Utako Kuzaka <utako@tnes.nec.co.jp> for this.
        - Fix up xfs_repair aborting if it finds an inode with an invalid 
          inode type.
+       - Fix up default realtime extent size for large block sizes.
 
 xfsprogs-2.8.16 (30 October 2006)
        - Fix up an endian problem for nlink setting in phase 7 for xfs_repair.
index 54c6ad62defe5879e506faf32eeb66cfabd25a3a..ae832b121479745c45d70fea8b07b375f16d8e68 100644 (file)
@@ -25,7 +25,6 @@ struct xfs_trans;
 
 /* Min and max rt extent sizes, specified in bytes */
 #define        XFS_MAX_RTEXTSIZE       (1024 * 1024 * 1024)    /* 1GB */
-#define        XFS_DFL_RTEXTSIZE       (4 * 1024)              /* 4KB */
 #define        XFS_MIN_RTEXTSIZE       (4 * 1024)              /* 4KB */
 
 /*
index 98fb1adab1bcf45559b951bca90d9a328d0a97a2..74e68a728bcffede067e904d1bc5519a7cda8614 100644 (file)
@@ -618,7 +618,7 @@ main(
        liflag = laflag = lsflag = ldflag = lvflag = 0;
        loginternal = 1;
        logversion = 1;
-       logagno = logblocks = rtblocks = 0;
+       logagno = logblocks = rtblocks = rtextblocks = 0;
        Nflag = nlflag = nsflag = nvflag = 0;
        dirblocklog = dirblocksize = dirversion = 0;
        qflag = 0;
@@ -1466,12 +1466,14 @@ main(
                        if (XFS_MIN_RTEXTSIZE <= rtextbytes &&
                            (rtextbytes <= XFS_MAX_RTEXTSIZE)) {
                                rtextblocks = rswidth;
-                       } else {
-                               rtextblocks = XFS_DFL_RTEXTSIZE >> blocklog;
-                       }
-               } else
-                       rtextblocks = XFS_DFL_RTEXTSIZE >> blocklog;
+                       } 
+               }
+               if (!rtextblocks) {
+                       rtextblocks = (blocksize < XFS_MIN_RTEXTSIZE) ?
+                                       XFS_MIN_RTEXTSIZE >> blocklog : 1;
+               }
        }
+       ASSERT(rtextblocks);
 
        /*
         * Check some argument sizes against mins, maxes.