aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/ctree.h1
-rw-r--r--fs/btrfs/extent-tree.c2
-rw-r--r--fs/btrfs/free-space-cache.c2
-rw-r--r--fs/btrfs/super.c6
4 files changed, 8 insertions, 3 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index b155a0e49eeb..633e559e000e 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1229,6 +1229,7 @@ struct btrfs_root {
1229#define BTRFS_MOUNT_DISCARD (1 << 10) 1229#define BTRFS_MOUNT_DISCARD (1 << 10)
1230#define BTRFS_MOUNT_FORCE_COMPRESS (1 << 11) 1230#define BTRFS_MOUNT_FORCE_COMPRESS (1 << 11)
1231#define BTRFS_MOUNT_SPACE_CACHE (1 << 12) 1231#define BTRFS_MOUNT_SPACE_CACHE (1 << 12)
1232#define BTRFS_MOUNT_CLEAR_CACHE (1 << 13)
1232 1233
1233#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) 1234#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
1234#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) 1235#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 137833e1fc26..1a94ee4c4fbb 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -8198,6 +8198,8 @@ int btrfs_read_block_groups(struct btrfs_root *root)
8198 if (cache_gen != 0 && 8198 if (cache_gen != 0 &&
8199 btrfs_super_generation(&root->fs_info->super_copy) != cache_gen) 8199 btrfs_super_generation(&root->fs_info->super_copy) != cache_gen)
8200 need_clear = 1; 8200 need_clear = 1;
8201 if (btrfs_test_opt(root, CLEAR_CACHE))
8202 need_clear = 1;
8201 8203
8202 while (1) { 8204 while (1) {
8203 ret = find_first_block_group(root, path, &key); 8205 ret = find_first_block_group(root, path, &key);
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index baa193423fb8..22ee0dc2e6b8 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -242,8 +242,6 @@ int load_free_space_cache(struct btrfs_fs_info *fs_info,
242 */ 242 */
243 spin_lock(&block_group->lock); 243 spin_lock(&block_group->lock);
244 if (block_group->disk_cache_state != BTRFS_DC_WRITTEN) { 244 if (block_group->disk_cache_state != BTRFS_DC_WRITTEN) {
245 printk(KERN_ERR "not reading block group %llu, dcs is %d\n", block_group->key.objectid,
246 block_group->disk_cache_state);
247 spin_unlock(&block_group->lock); 245 spin_unlock(&block_group->lock);
248 return 0; 246 return 0;
249 } 247 }
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 5c23eb8d6ba3..5f56213908e7 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -68,7 +68,7 @@ enum {
68 Opt_nodatacow, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, Opt_ssd, 68 Opt_nodatacow, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, Opt_ssd,
69 Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, Opt_compress, 69 Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, Opt_compress,
70 Opt_compress_force, Opt_notreelog, Opt_ratio, Opt_flushoncommit, 70 Opt_compress_force, Opt_notreelog, Opt_ratio, Opt_flushoncommit,
71 Opt_discard, Opt_space_cache, Opt_err, 71 Opt_discard, Opt_space_cache, Opt_clear_cache, Opt_err,
72}; 72};
73 73
74static match_table_t tokens = { 74static match_table_t tokens = {
@@ -93,6 +93,7 @@ static match_table_t tokens = {
93 {Opt_ratio, "metadata_ratio=%d"}, 93 {Opt_ratio, "metadata_ratio=%d"},
94 {Opt_discard, "discard"}, 94 {Opt_discard, "discard"},
95 {Opt_space_cache, "space_cache"}, 95 {Opt_space_cache, "space_cache"},
96 {Opt_clear_cache, "clear_cache"},
96 {Opt_err, NULL}, 97 {Opt_err, NULL},
97}; 98};
98 99
@@ -239,6 +240,9 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
239 case Opt_space_cache: 240 case Opt_space_cache:
240 printk(KERN_INFO "btrfs: enabling disk space caching\n"); 241 printk(KERN_INFO "btrfs: enabling disk space caching\n");
241 btrfs_set_opt(info->mount_opt, SPACE_CACHE); 242 btrfs_set_opt(info->mount_opt, SPACE_CACHE);
243 case Opt_clear_cache:
244 printk(KERN_INFO "btrfs: force clearing of disk cache\n");
245 btrfs_set_opt(info->mount_opt, CLEAR_CACHE);
242 break; 246 break;
243 case Opt_err: 247 case Opt_err:
244 printk(KERN_INFO "btrfs: unrecognized mount option " 248 printk(KERN_INFO "btrfs: unrecognized mount option "