Btrfs: mount -o max_inline=size to control the maximum inline extent size

Signed-off-by: Chris Mason <chris.mason@oracle.com>
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index f8a1016..a46300c 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -64,7 +64,7 @@
 
 enum {
 	Opt_subvol, Opt_nodatasum, Opt_nodatacow, Opt_max_extent,
-	Opt_alloc_start, Opt_nobarrier, Opt_ssd, Opt_err,
+	Opt_max_inline, Opt_alloc_start, Opt_nobarrier, Opt_ssd, Opt_err,
 };
 
 static match_table_t tokens = {
@@ -73,6 +73,7 @@
 	{Opt_nodatacow, "nodatacow"},
 	{Opt_nobarrier, "nobarrier"},
 	{Opt_max_extent, "max_extent=%s"},
+	{Opt_max_inline, "max_inline=%s"},
 	{Opt_alloc_start, "alloc_start=%s"},
 	{Opt_ssd, "ssd"},
 	{Opt_err, NULL}
@@ -178,6 +179,22 @@
 				}
 			}
 			break;
+		case Opt_max_inline:
+			if (info) {
+				char *num = match_strdup(&args[0]);
+				if (num) {
+					info->max_inline =
+						btrfs_parse_size(num);
+					kfree(num);
+
+					info->max_inline = max_t(u64,
+							 info->max_inline,
+							 root->sectorsize);
+					printk("btrfs: max_inline at %Lu\n",
+					       info->max_inline);
+				}
+			}
+			break;
 		case Opt_alloc_start:
 			if (info) {
 				char *num = match_strdup(&args[0]);