diff options
Diffstat (limited to 'fs/btrfs/super.c')
| -rw-r--r-- | fs/btrfs/super.c | 47 | 
1 files changed, 40 insertions, 7 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index b1fdc6a26c76..6627dd7875ee 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -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: @@ -1985,6 +2010,14 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data)  	if (ret)  		goto restore; +	/* V1 cache is not supported for subpage mount. */ +	if (fs_info->sectorsize < PAGE_SIZE && btrfs_test_opt(fs_info, SPACE_CACHE)) { +		btrfs_warn(fs_info, +	"v1 space cache is not supported for page size %lu with sectorsize %u", +			   PAGE_SIZE, fs_info->sectorsize); +		ret = -EINVAL; +		goto restore; +	}  	btrfs_remount_begin(fs_info, old_opts, *flags);  	btrfs_resize_thread_pool(fs_info,  		fs_info->thread_pool_size, old_thread_pool_size);  | 
