Disable finobt by default for compatibility w/ old RHEL7 kernels. Disable experimental sparse inode support entirely. Index: xfsprogs-4.5.0/man/man8/mkfs.xfs.8 =================================================================== --- xfsprogs-4.5.0.orig/man/man8/mkfs.xfs.8 +++ xfsprogs-4.5.0/man/man8/mkfs.xfs.8 @@ -167,9 +167,10 @@ filesystems age. .IP By default, .B mkfs.xfs -will create free inode btrees for filesystems created with the (default) -.B \-m crc=1 -option set. When the option +will not create free inode btrees for filesystems. This is for backwards +compatibility with older RHEL7 kernels. If the free inode btree is enabled, +older RHEL7 kernels will not be able to mount the created filesystem. +When the option .B \-m crc=0 is used, the free inode btree feature is not supported and is disabled. .TP @@ -419,21 +420,8 @@ If the value is omitted, 1 is assumed. in release version 3.2.0.) .TP .BI sparse[= value ] -Enable sparse inode chunk allocation. The -.I value -is either 0 or 1, with 1 signifying that sparse allocation is enabled. -If the value is omitted, 1 is assumed. Sparse inode allocation is -disabled by default. This feature is only available for filesystems -formatted with -.B \-m crc=1. -.IP -When enabled, sparse inode allocation allows the filesystem to allocate -smaller than the standard 64-inode chunk when free space is severely -limited. This feature is useful for filesystems that might fragment free -space over time such that no free extents are large enough to -accommodate a chunk of 64 inodes. Without this feature enabled, inode -allocations can fail with out of space errors under severe fragmented -free space conditions. +Enable sparse inode chunk allocation. This experimental option is not +available in RHEL7. .RE .TP .BI \-l " log_section_options" Index: xfsprogs-4.5.0/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs-4.5.0.orig/mkfs/xfs_mkfs.c +++ xfsprogs-4.5.0/mkfs/xfs_mkfs.c @@ -105,8 +105,6 @@ char *iopts[] = { "attr", #define I_PROJID32BIT 6 "projid32bit", -#define I_SPINODES 7 - "sparse", NULL }; @@ -1019,7 +1017,7 @@ main( worst_freelist = 0; lazy_sb_counters = 1; crcs_enabled = 1; - finobt = 1; + finobt = 0; finobtflag = false; spinodes = 0; memset(&fsx, 0, sizeof(fsx)); @@ -1343,6 +1341,7 @@ main( illegal(value, "i projid32bit"); projid16bit = c ? 0 : 1; break; +#if 0 case I_SPINODES: if (!value || *value == '\0') value = "1"; @@ -1350,6 +1349,7 @@ main( if (spinodes < 0 || spinodes > 1) illegal(value, "i spinodes"); break; +#endif default: unknown('i', value); } @@ -3213,7 +3213,7 @@ usage( void ) sectlog=n|sectsize=num\n\ /* force overwrite */ [-f]\n\ /* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ - projid32bit=0|1,sparse=0|1]\n\ + projid32bit=0|1]\n\ /* no discard */ [-K]\n\ /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ sunit=value|su=num,sectlog=n|sectsize=num,\n\