diff options
Diffstat (limited to 'fs/btrfs/super.c')
| -rw-r--r-- | fs/btrfs/super.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 6cb97efee976..efeb1a9d040a 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -826,7 +826,11 @@ out:  	    !btrfs_test_opt(info, CLEAR_CACHE)) {  		btrfs_err(info, "cannot disable free space tree");  		ret = -EINVAL; - +	} +	if (btrfs_fs_compat_ro(info, BLOCK_GROUP_TREE) && +	     !btrfs_test_opt(info, FREE_SPACE_TREE)) { +		btrfs_err(info, "cannot disable free space tree with block-group-tree feature"); +		ret = -EINVAL;  	}  	if (!ret)  		ret = btrfs_check_mountopts_zoned(info); @@ -1837,6 +1841,12 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data)  		btrfs_clear_sb_rdonly(sb);  		set_bit(BTRFS_FS_OPEN, &fs_info->flags); + +		/* +		 * If we've gone from readonly -> read/write, we need to get +		 * our sync/async discard lists in the right state. +		 */ +		btrfs_discard_resume(fs_info);  	}  out:  	/*  | 
