FAILED: patch "[PATCH] btrfs: add error messages to all unrecognized mount options" failed to apply to 4.19-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e3a4167c880cf889f66887a152799df4d609dd21 Mon Sep 17 00:00:00 2001
From: David Sterba <[email protected]>
Date: Thu, 2 Jun 2022 23:57:17 +0200
Subject: [PATCH] btrfs: add error messages to all unrecognized mount options
Almost none of the errors stemming from a valid mount option but wrong value prints a descriptive message which would help to identify why mount failed. Like in the linked report:
$ uname -r v4.19 $ mount -o compress=zstd /dev/sdb /mnt mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error. $ dmesg ... BTRFS error (device sdb): open_ctree failed
Errors caused by memory allocation failures are left out as it's not a user error so reporting that would be confusing.
fs/btrfs/super.c +32 -7
@@ -763,6 +763,8 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options, compress_force = false; no_compress++; }else { +btrfs_err (info,"unrecognized compression value %s" , + args[0 ].from); ret = -EINVAL ; goto out; }
@@ -821,8 +823,11 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,case Opt_thread_pool: ret =match_int (&args[0 ], &intarg);if (ret) { +btrfs_err (info,"unrecognized thread_pool value %s" , + args[0 ].from); goto out; }else if (intarg ==0 ) { +btrfs_err (info,"invalid value 0 for thread_pool" ); ret = -EINVAL ; goto out; }
@@ -883,8 +888,11 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,break ;case Opt_ratio: ret =match_int (&args[0 ], &intarg); -if (ret) +if (ret) { +btrfs_err (info,"unrecognized metadata_ratio value %s" , + args[0 ].from); goto out; + } info->metadata_ratio = intarg;btrfs_info (info,"metadata ratio %u" , info->metadata_ratio);
@@ -901,6 +909,8 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,btrfs_set_and_info (info,DISCARD_ASYNC ,"turning on async discard" ); }else { +btrfs_err (info,"unrecognized discard mode value %s" , + args[0 ].from); ret = -EINVAL ; goto out; }
@@ -933,6 +943,8 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,btrfs_set_and_info (info,FREE_SPACE_TREE ,"enabling free space tree" ); }else { +btrfs_err (info,"unrecognized space_cache value %s" , + args[0 ].from); ret = -EINVAL ; goto out; }
@@ -1014,8 +1026,12 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,break ;case Opt_check_integrity_print_mask: ret =match_int (&args[0 ], &intarg); -if (ret) +if (ret) { +btrfs_err (info, +"unrecognized check_integrity_print_mask value %s" , + args[0 ].from); goto out; + } info->check_integrity_print_mask = intarg;btrfs_info (info,"check_integrity_print_mask 0x%x" , info->check_integrity_print_mask);
@@ -1030,13 +1046,15 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options, goto out;#endif case Opt_fatal_errors: -if (strcmp (args[0 ].from,"panic" ) ==0 ) +if (strcmp (args[0 ].from,"panic" ) ==0 ) {btrfs_set_opt (info->mount_opt,PANIC_ON_FATAL_ERROR ); -else if (strcmp (args[0 ].from,"bug" ) ==0 ) + }else if (strcmp (args[0 ].from,"bug" ) ==0 ) {btrfs_clear_opt (info->mount_opt,PANIC_ON_FATAL_ERROR ); -else { + }else { +btrfs_err (info,"unrecognized fatal_errors value %s" , + args[0 ].from); ret = -EINVAL ; goto out; }
@@ -1044,8 +1062,12 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,case Opt_commit_interval: intarg =0 ; ret =match_int (&args[0 ], &intarg); -if (ret) +if (ret) { +btrfs_err (info,"unrecognized commit_interval value %s" , + args[0 ].from); + ret = -EINVAL ; goto out; + }if (intarg ==0 ) { btrfs_info(info, "using default commit interval %us",
@@ -1059,8 +1081,11 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,break ;case Opt_rescue: ret =parse_rescue_options (info, args[0 ].from); -if (ret <0 ) +if (ret <0 ) { +btrfs_err (info,"unrecognized rescue value %s" , + args[0 ].from); goto out; + }break ;#ifdef CONFIG_BTRFS_DEBUG case Opt_fragment_all: