diff options
| -rw-r--r-- | fs/btrfs/ctree.h | 1 | ||||
| -rw-r--r-- | fs/btrfs/inode.c | 3 | ||||
| -rw-r--r-- | fs/btrfs/super.c | 9 |
3 files changed, 11 insertions, 2 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 9f806dd04c27..2aa8ec6a0981 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
| @@ -1161,6 +1161,7 @@ struct btrfs_root { | |||
| 1161 | #define BTRFS_MOUNT_SSD_SPREAD (1 << 8) | 1161 | #define BTRFS_MOUNT_SSD_SPREAD (1 << 8) |
| 1162 | #define BTRFS_MOUNT_NOSSD (1 << 9) | 1162 | #define BTRFS_MOUNT_NOSSD (1 << 9) |
| 1163 | #define BTRFS_MOUNT_DISCARD (1 << 10) | 1163 | #define BTRFS_MOUNT_DISCARD (1 << 10) |
| 1164 | #define BTRFS_MOUNT_FORCE_COMPRESS (1 << 11) | ||
| 1164 | 1165 | ||
| 1165 | #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) | 1166 | #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) |
| 1166 | #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) | 1167 | #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index b330e27c2d8b..f46c57276844 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
| @@ -483,7 +483,8 @@ again: | |||
| 483 | nr_pages_ret = 0; | 483 | nr_pages_ret = 0; |
| 484 | 484 | ||
| 485 | /* flag the file so we don't compress in the future */ | 485 | /* flag the file so we don't compress in the future */ |
| 486 | BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS; | 486 | if (!btrfs_test_opt(root, FORCE_COMPRESS)) |
| 487 | BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS; | ||
| 487 | } | 488 | } |
| 488 | if (will_compress) { | 489 | if (will_compress) { |
| 489 | *num_added += 1; | 490 | *num_added += 1; |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 3f9b45704fcd..8a1ea6e64575 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
| @@ -66,7 +66,8 @@ enum { | |||
| 66 | Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow, | 66 | Opt_degraded, Opt_subvol, Opt_device, Opt_nodatasum, Opt_nodatacow, |
| 67 | Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, | 67 | Opt_max_extent, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, |
| 68 | Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, | 68 | Opt_ssd, Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, |
| 69 | Opt_compress, Opt_notreelog, Opt_ratio, Opt_flushoncommit, | 69 | Opt_compress, Opt_compress_force, Opt_notreelog, Opt_ratio, |
| 70 | Opt_flushoncommit, | ||
| 70 | Opt_discard, Opt_err, | 71 | Opt_discard, Opt_err, |
| 71 | }; | 72 | }; |
| 72 | 73 | ||
| @@ -82,6 +83,7 @@ static match_table_t tokens = { | |||
| 82 | {Opt_alloc_start, "alloc_start=%s"}, | 83 | {Opt_alloc_start, "alloc_start=%s"}, |
| 83 | {Opt_thread_pool, "thread_pool=%d"}, | 84 | {Opt_thread_pool, "thread_pool=%d"}, |
| 84 | {Opt_compress, "compress"}, | 85 | {Opt_compress, "compress"}, |
| 86 | {Opt_compress_force, "compress-force"}, | ||
| 85 | {Opt_ssd, "ssd"}, | 87 | {Opt_ssd, "ssd"}, |
| 86 | {Opt_ssd_spread, "ssd_spread"}, | 88 | {Opt_ssd_spread, "ssd_spread"}, |
| 87 | {Opt_nossd, "nossd"}, | 89 | {Opt_nossd, "nossd"}, |
| @@ -173,6 +175,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) | |||
| 173 | printk(KERN_INFO "btrfs: use compression\n"); | 175 | printk(KERN_INFO "btrfs: use compression\n"); |
| 174 | btrfs_set_opt(info->mount_opt, COMPRESS); | 176 | btrfs_set_opt(info->mount_opt, COMPRESS); |
| 175 | break; | 177 | break; |
| 178 | case Opt_compress_force: | ||
| 179 | printk(KERN_INFO "btrfs: forcing compression\n"); | ||
| 180 | btrfs_set_opt(info->mount_opt, FORCE_COMPRESS); | ||
| 181 | btrfs_set_opt(info->mount_opt, COMPRESS); | ||
| 182 | break; | ||
| 176 | case Opt_ssd: | 183 | case Opt_ssd: |
| 177 | printk(KERN_INFO "btrfs: use ssd allocation scheme\n"); | 184 | printk(KERN_INFO "btrfs: use ssd allocation scheme\n"); |
| 178 | btrfs_set_opt(info->mount_opt, SSD); | 185 | btrfs_set_opt(info->mount_opt, SSD); |
