Blob Blame History Raw
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\