diff mbox

[SRU,UTOPIC] Btrfs: clear compress-force when remounting with compress option

Message ID 1426786609-1442-1-git-send-email-colin.king@canonical.com
State New
Headers show

Commit Message

Colin Ian King March 19, 2015, 5:36 p.m. UTC
From: Wang Shilong <wangsl.fnst@cn.fujitsu.com>

BugLink: http://bugs.launchpad.net/bugs/1434183

Steps to reproduce:
 # mkfs.btrfs -f /dev/sdb
 # mount /dev/sdb /mnt -o compress-force=lzo
 # mount /dev/sdb /mnt -o remount,compress=zlib
 # cat /proc/mounts

Remounting from compress-force to compress could not clear compress-force
option. The problem is there is no way for users to clear compress-force
option separately.

Fix this problem by clearing @FORCE_COMPRESS flag when remounting to
compress=xxx.

Suggested-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Tested-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
(cherry pick from upstream commit 4027e0f4c4b2df28d564560a3c65c179bebae4c8)
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 fs/btrfs/super.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Seth Forshee March 19, 2015, 7:36 p.m. UTC | #1

Stefan Bader March 20, 2015, 7:51 a.m. UTC | #2
Sounds straight fwd, cherry pick and testable
Andy Whitcroft March 20, 2015, 11:22 a.m. UTC | #3
Applied to utopic.

-apw
diff mbox

Patch

diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 568ddc1..d66fbd5 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -507,6 +507,13 @@  int btrfs_parse_options(struct btrfs_root *root, char *options)
 					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
+				 * flag, otherwise, there is no way for users
+				 * to disable forcible compression separately.
+				 */
+				btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS);
 			}
 			break;
 		case Opt_ssd: