Merge branch 'for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
Pull more btrfs updates from Chris Mason: "These are mostly fixes that we've been testing, but also we grabbed and tested a few small cleanups that had been on the list for a while. Zhao Lei's patchset also fixes some early ENOSPC buglets" * 'for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (21 commits) btrfs: raid56: Use raid_write_end_io for scrub btrfs: Remove unnecessary ClearPageUptodate for raid56 btrfs: use rbio->nr_pages to reduce calculation btrfs: Use unified stripe_page's index calculation btrfs: Fix calculation of rbio->dbitmap's size calculation btrfs: Fix no_space in write and rm loop btrfs: merge functions for wait snapshot creation btrfs: delete unused argument in btrfs_copy_from_user btrfs: Use direct way to determine raid56 write/recover mode btrfs: Small cleanup for get index_srcdev loop btrfs: Enhance chunk validation check btrfs: Enhance super validation check Btrfs: fix deadlock running delayed iputs at transaction commit time Btrfs: fix typo in log message when starting a balance btrfs: remove duplicate const specifier btrfs: initialize the seq counter in struct btrfs_device Btrfs: clean up an error code in btrfs_init_space_info() btrfs: fix iterator with update error in backref.c Btrfs: fix output of compression message in btrfs_parse_options() Btrfs: Initialize btrfs_root->highest_objectid when loading tree root and subvolume roots ...
This commit is contained in:
@@ -383,6 +383,9 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
|
||||
int ret = 0;
|
||||
char *compress_type;
|
||||
bool compress_force = false;
|
||||
enum btrfs_compression_type saved_compress_type;
|
||||
bool saved_compress_force;
|
||||
int no_compress = 0;
|
||||
|
||||
cache_gen = btrfs_super_cache_generation(root->fs_info->super_copy);
|
||||
if (btrfs_fs_compat_ro(root->fs_info, FREE_SPACE_TREE))
|
||||
@@ -462,6 +465,10 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
|
||||
/* Fallthrough */
|
||||
case Opt_compress:
|
||||
case Opt_compress_type:
|
||||
saved_compress_type = btrfs_test_opt(root, COMPRESS) ?
|
||||
info->compress_type : BTRFS_COMPRESS_NONE;
|
||||
saved_compress_force =
|
||||
btrfs_test_opt(root, FORCE_COMPRESS);
|
||||
if (token == Opt_compress ||
|
||||
token == Opt_compress_force ||
|
||||
strcmp(args[0].from, "zlib") == 0) {
|
||||
@@ -470,6 +477,7 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
|
||||
btrfs_set_opt(info->mount_opt, COMPRESS);
|
||||
btrfs_clear_opt(info->mount_opt, NODATACOW);
|
||||
btrfs_clear_opt(info->mount_opt, NODATASUM);
|
||||
no_compress = 0;
|
||||
} else if (strcmp(args[0].from, "lzo") == 0) {
|
||||
compress_type = "lzo";
|
||||
info->compress_type = BTRFS_COMPRESS_LZO;
|
||||
@@ -477,25 +485,21 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
|
||||
btrfs_clear_opt(info->mount_opt, NODATACOW);
|
||||
btrfs_clear_opt(info->mount_opt, NODATASUM);
|
||||
btrfs_set_fs_incompat(info, COMPRESS_LZO);
|
||||
no_compress = 0;
|
||||
} else if (strncmp(args[0].from, "no", 2) == 0) {
|
||||
compress_type = "no";
|
||||
btrfs_clear_opt(info->mount_opt, COMPRESS);
|
||||
btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS);
|
||||
compress_force = false;
|
||||
no_compress++;
|
||||
} else {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (compress_force) {
|
||||
btrfs_set_and_info(root, FORCE_COMPRESS,
|
||||
"force %s compression",
|
||||
compress_type);
|
||||
btrfs_set_opt(info->mount_opt, FORCE_COMPRESS);
|
||||
} else {
|
||||
if (!btrfs_test_opt(root, COMPRESS))
|
||||
btrfs_info(root->fs_info,
|
||||
"btrfs: use %s compression",
|
||||
compress_type);
|
||||
/*
|
||||
* If we remount from compress-force=xxx to
|
||||
* compress=xxx, we need clear FORCE_COMPRESS
|
||||
@@ -504,6 +508,17 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
|
||||
*/
|
||||
btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS);
|
||||
}
|
||||
if ((btrfs_test_opt(root, COMPRESS) &&
|
||||
(info->compress_type != saved_compress_type ||
|
||||
compress_force != saved_compress_force)) ||
|
||||
(!btrfs_test_opt(root, COMPRESS) &&
|
||||
no_compress == 1)) {
|
||||
btrfs_info(root->fs_info,
|
||||
"%s %s compression",
|
||||
(compress_force) ? "force" : "use",
|
||||
compress_type);
|
||||
}
|
||||
compress_force = false;
|
||||
break;
|
||||
case Opt_ssd:
|
||||
btrfs_set_and_info(root, SSD,
|
||||
|
Reference in New Issue
Block a user