From: Barry Naujok Date: Fri, 1 Dec 2006 02:52:23 +0000 (+0000) Subject: Fix up mkfs.xfs which can create a corrupt filesystem with large block sizes. X-Git-Tag: v2.9.0~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b040c37058ca88df5b9bbb9a76107294457b729;p=thirdparty%2Fxfsprogs-dev.git Fix up mkfs.xfs which can create a corrupt filesystem with large block sizes. Merge of master-melb:xfs-cmds:27594a by kenmcd. --- diff --git a/doc/CHANGES b/doc/CHANGES index a2d270893..59a407226 100644 --- a/doc/CHANGES +++ b/doc/CHANGES @@ -3,6 +3,7 @@ xfsprogs-2.8.x Thanks to Utako Kuzaka 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. diff --git a/include/xfs_rtalloc.h b/include/xfs_rtalloc.h index 54c6ad62d..ae832b121 100644 --- a/include/xfs_rtalloc.h +++ b/include/xfs_rtalloc.h @@ -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 */ /* diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 98fb1adab..74e68a728 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -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.