All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems
@ 2016-01-19  2:23 Qu Wenruo
  2016-01-19  2:23 ` [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery Qu Wenruo
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Qu Wenruo @ 2016-01-19  2:23 UTC (permalink / raw)
  To: linux-btrfs

'Norecovery' mount option is almost a standard for all other
filesystems, including f2fs, ext4, gfs2, nilfs2, and xfs.
And since current 'recovery' mount option for btrfs is too generic, it's
better to change btrfs 'recovery' to 'usebackuproot' and then we can
safely add 'norecovery' and 'nologreplay' mount option for btrfs.

The patch itself is not huge and already tested by others since v2.
Only mount option name and patch slipting is changing during all
these version changes.

Qu Wenruo (3):
  btrfs: Introduce new mount option usebackuproot to replace recovery
  btrfs: Introduce new mount option to disable tree log replay
  btrfs: Introduce new mount option alias for nologreplay

 Documentation/filesystems/btrfs.txt | 17 +++++++++++---
 fs/btrfs/ctree.h                    |  6 +++--
 fs/btrfs/disk-io.c                  | 15 ++++++++----
 fs/btrfs/super.c                    | 47 ++++++++++++++++++++++++++++++-------
 4 files changed, 67 insertions(+), 18 deletions(-)

-- 
2.7.0




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery
  2016-01-19  2:23 [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
@ 2016-01-19  2:23 ` Qu Wenruo
  2016-02-12 13:05   ` David Sterba
  2016-01-19  2:23 ` [PATCH V7 2/3] btrfs: Introduce new mount option to disable tree log replay Qu Wenruo
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Qu Wenruo @ 2016-01-19  2:23 UTC (permalink / raw)
  To: linux-btrfs

Current "recovery" mount option will only try to use backup root.
However the word "recovery" is too generic and may be confusing for some
users.

Here introduce a new and more specific mount option, "usebackuproot" to
replace "recovery" mount option.
"Recovery" will be kept for compatibility reason, but will be
deprecated.

Also, since "usebackuproot" will only affect mount behavior and after
open_ctree() it has nothing to do with the filesystem, so clear the flag
after mount succeeded.

This provides the basis for later unified "norecovery" mount option.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
---
v4:
  Newly introduced to avoid confusion with later 'norecovery' patch.
v5:
  Use 'usebackuproot' to replace 'backuproot' mount option.
v6:
  None
v7:
  Fix a copy-n-paste error in commit message
---
 Documentation/filesystems/btrfs.txt |  9 ++++++---
 fs/btrfs/ctree.h                    |  2 +-
 fs/btrfs/disk-io.c                  |  8 +++++++-
 fs/btrfs/super.c                    | 17 +++++++++++------
 4 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt
index c772b47..8e22d92 100644
--- a/Documentation/filesystems/btrfs.txt
+++ b/Documentation/filesystems/btrfs.txt
@@ -168,10 +168,13 @@ Options with (*) are default options and will not show in the mount options.
   notreelog
 	Enable/disable the tree logging used for fsync and O_SYNC writes.
 
-  recovery
-	Enable autorecovery attempts if a bad tree root is found at mount time.
-	Currently this scans a list of several previous tree roots and tries to
+  usebackuproot
+	Enable attempts to use backup tree roots if a bad tree root is found at
+	mount time.
+	Currently this scans a list of 4 previous tree roots and tries to
 	use the first readable.
+	And since the mount option doesn't affect any behavior after mount,
+	it won't be shown in mount info.
 
   rescan_uuid_tree
 	Force check and rebuild procedure of the UUID tree. This should not
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index c5f40dc..47a96a7 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2241,7 +2241,7 @@ struct btrfs_ioctl_defrag_range_args {
 #define BTRFS_MOUNT_ENOSPC_DEBUG	 (1 << 15)
 #define BTRFS_MOUNT_AUTO_DEFRAG		(1 << 16)
 #define BTRFS_MOUNT_INODE_MAP_CACHE	(1 << 17)
-#define BTRFS_MOUNT_RECOVERY		(1 << 18)
+#define BTRFS_MOUNT_USEBACKUPROOT	(1 << 18)
 #define BTRFS_MOUNT_SKIP_BALANCE	(1 << 19)
 #define BTRFS_MOUNT_CHECK_INTEGRITY	(1 << 20)
 #define BTRFS_MOUNT_CHECK_INTEGRITY_INCLUDING_EXTENT_DATA (1 << 21)
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index c67c129..6f16557 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3141,6 +3141,12 @@ retry_root_backup:
 
 	fs_info->open = 1;
 
+	/*
+	 * backuproot only affect mount behavior, and if open_ctree succeeded,
+	 * no need to keep the flag
+	 */
+	btrfs_clear_opt(fs_info->mount_opt, USEBACKUPROOT);
+
 	return 0;
 
 fail_qgroup:
@@ -3195,7 +3201,7 @@ fail:
 	return err;
 
 recovery_tree_root:
-	if (!btrfs_test_opt(tree_root, RECOVERY))
+	if (!btrfs_test_opt(tree_root, USEBACKUPROOT))
 		goto fail_tree_roots;
 
 	free_root_pointers(fs_info, 0);
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 86f7fdc..0842456 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -303,7 +303,7 @@ enum {
 	Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree,
 	Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
 	Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_datacow,
-	Opt_datasum, Opt_treelog, Opt_noinode_cache,
+	Opt_datasum, Opt_treelog, Opt_noinode_cache, Opt_usebackuproot,
 #ifdef CONFIG_BTRFS_DEBUG
 	Opt_fragment_data, Opt_fragment_metadata, Opt_fragment_all,
 #endif
@@ -352,7 +352,8 @@ static const match_table_t tokens = {
 	{Opt_inode_cache, "inode_cache"},
 	{Opt_noinode_cache, "noinode_cache"},
 	{Opt_no_space_cache, "nospace_cache"},
-	{Opt_recovery, "recovery"},
+	{Opt_recovery, "recovery"}, /* deprecated */
+	{Opt_usebackuproot, "usebackuproot"},
 	{Opt_skip_balance, "skip_balance"},
 	{Opt_check_integrity, "check_int"},
 	{Opt_check_integrity_including_extent_data, "check_int_data"},
@@ -681,8 +682,12 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
 					     "disabling auto defrag");
 			break;
 		case Opt_recovery:
-			btrfs_info(root->fs_info, "enabling auto recovery");
-			btrfs_set_opt(info->mount_opt, RECOVERY);
+			btrfs_warn(root->fs_info,
+				   "'recovery' is deprecated, use 'usebackuproot' instead");
+		case Opt_usebackuproot:
+			btrfs_info(root->fs_info,
+				   "trying to use backup root at mount time");
+			btrfs_set_opt(info->mount_opt, USEBACKUPROOT);
 			break;
 		case Opt_skip_balance:
 			btrfs_set_opt(info->mount_opt, SKIP_BALANCE);
@@ -1213,8 +1218,8 @@ static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
 		seq_puts(seq, ",inode_cache");
 	if (btrfs_test_opt(root, SKIP_BALANCE))
 		seq_puts(seq, ",skip_balance");
-	if (btrfs_test_opt(root, RECOVERY))
-		seq_puts(seq, ",recovery");
+	if (btrfs_test_opt(root, USEBACKUPROOT))
+		seq_puts(seq, ",usebackuproot");
 #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
 	if (btrfs_test_opt(root, CHECK_INTEGRITY_INCLUDING_EXTENT_DATA))
 		seq_puts(seq, ",check_int_data");
-- 
2.7.0




^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH V7 2/3] btrfs: Introduce new mount option to disable tree log replay
  2016-01-19  2:23 [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
  2016-01-19  2:23 ` [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery Qu Wenruo
@ 2016-01-19  2:23 ` Qu Wenruo
  2016-01-19  2:23 ` [PATCH V7 3/3] btrfs: Introduce new mount option alias for nologreplay Qu Wenruo
  2016-01-29  3:17 ` [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
  3 siblings, 0 replies; 9+ messages in thread
From: Qu Wenruo @ 2016-01-19  2:23 UTC (permalink / raw)
  To: linux-btrfs

Introduce a new mount option "nologreplay" to co-operate with "ro" mount
option to get real readonly mount, like "norecovery" in ext* and xfs.

Since the new parse_options() need to check new flags at remount time,
so add a new parameter for parse_options().

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Tested-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>

---
v2:
  Make RO check mandatory for btrfs_parse_options().
  Add btrfs_show_options() support for nologreplay.

  Document for btrfs-mount(5) will follow after the patch being merged.
v3:
  Apply the document suggestion from  Chandan Rajendra.
v4:
  Add 'norecovery' alias for 'nologreplay'.
v5:
  None
v6:
  Splite alias for "norecovery" into another patch.
v7:
  None
---
 Documentation/filesystems/btrfs.txt |  8 ++++++++
 fs/btrfs/ctree.h                    |  4 +++-
 fs/btrfs/disk-io.c                  |  7 ++++---
 fs/btrfs/super.c                    | 28 +++++++++++++++++++++++++---
 4 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt
index 8e22d92..34ea3ed 100644
--- a/Documentation/filesystems/btrfs.txt
+++ b/Documentation/filesystems/btrfs.txt
@@ -168,6 +168,14 @@ Options with (*) are default options and will not show in the mount options.
   notreelog
 	Enable/disable the tree logging used for fsync and O_SYNC writes.
 
+  nologreplay
+	Disable the log tree replay at mount time to prevent filesystem
+	from getting modified.
+	Must be used with 'ro' mount option.
+	A filesystem mounted with this option cannot transition to a
+	read-write mount via remount,rw - the filesystem must be unmounted
+	and mounted back again if read-write access is desired.
+
   usebackuproot
 	Enable attempts to use backup tree roots if a bad tree root is found at
 	mount time.
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 47a96a7..7ef9b2a 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2250,6 +2250,7 @@ struct btrfs_ioctl_defrag_range_args {
 #define BTRFS_MOUNT_FRAGMENT_DATA	(1 << 24)
 #define BTRFS_MOUNT_FRAGMENT_METADATA	(1 << 25)
 #define BTRFS_MOUNT_FREE_SPACE_TREE	(1 << 26)
+#define BTRFS_MOUNT_NOLOGREPLAY		(1 << 27)
 
 #define BTRFS_DEFAULT_COMMIT_INTERVAL	(30)
 #define BTRFS_DEFAULT_MAX_INLINE	(8192)
@@ -4144,7 +4145,8 @@ void btrfs_sysfs_remove_mounted(struct btrfs_fs_info *fs_info);
 ssize_t btrfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
 
 /* super.c */
-int btrfs_parse_options(struct btrfs_root *root, char *options);
+int btrfs_parse_options(struct btrfs_root *root, char *options,
+			unsigned long new_flags);
 int btrfs_sync_fs(struct super_block *sb, int wait);
 
 #ifdef CONFIG_PRINTK
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 6f16557..0ec4199 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -2726,7 +2726,7 @@ int open_ctree(struct super_block *sb,
 	 */
 	fs_info->compress_type = BTRFS_COMPRESS_ZLIB;
 
-	ret = btrfs_parse_options(tree_root, options);
+	ret = btrfs_parse_options(tree_root, options, sb->s_flags);
 	if (ret) {
 		err = ret;
 		goto fail_alloc;
@@ -3024,8 +3024,9 @@ retry_root_backup:
 	if (ret)
 		goto fail_trans_kthread;
 
-	/* do not make disk changes in broken FS */
-	if (btrfs_super_log_root(disk_super) != 0) {
+	/* do not make disk changes in broken FS or nologreplay is given */
+	if (btrfs_super_log_root(disk_super) != 0 &&
+	    !btrfs_test_opt(tree_root, NOLOGREPLAY)) {
 		ret = btrfs_replay_log(fs_info, fs_devices);
 		if (ret) {
 			err = ret;
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 0842456..1f97aa1 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -304,6 +304,7 @@ enum {
 	Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
 	Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_datacow,
 	Opt_datasum, Opt_treelog, Opt_noinode_cache, Opt_usebackuproot,
+	Opt_nologreplay,
 #ifdef CONFIG_BTRFS_DEBUG
 	Opt_fragment_data, Opt_fragment_metadata, Opt_fragment_all,
 #endif
@@ -335,6 +336,7 @@ static const match_table_t tokens = {
 	{Opt_noacl, "noacl"},
 	{Opt_notreelog, "notreelog"},
 	{Opt_treelog, "treelog"},
+	{Opt_nologreplay, "nologreplay"},
 	{Opt_flushoncommit, "flushoncommit"},
 	{Opt_noflushoncommit, "noflushoncommit"},
 	{Opt_ratio, "metadata_ratio=%d"},
@@ -374,7 +376,8 @@ static const match_table_t tokens = {
  * reading in a new superblock is parsed here.
  * XXX JDM: This needs to be cleaned up for remount.
  */
-int btrfs_parse_options(struct btrfs_root *root, char *options)
+int btrfs_parse_options(struct btrfs_root *root, char *options,
+			unsigned long new_flags)
 {
 	struct btrfs_fs_info *info = root->fs_info;
 	substring_t args[MAX_OPT_ARGS];
@@ -391,8 +394,12 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
 	else if (cache_gen)
 		btrfs_set_opt(info->mount_opt, SPACE_CACHE);
 
+	/*
+	 * Even the options are empty, we still need to do extra check
+	 * against new flags
+	 */
 	if (!options)
-		goto out;
+		goto check;
 
 	/*
 	 * strsep changes the string, duplicate it because parse_options
@@ -592,6 +599,10 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
 			btrfs_clear_and_info(root, NOTREELOG,
 					     "enabling tree log");
 			break;
+		case Opt_nologreplay:
+			btrfs_set_and_info(root, NOLOGREPLAY,
+					   "disabling log replay at mount time");
+			break;
 		case Opt_flushoncommit:
 			btrfs_set_and_info(root, FLUSHONCOMMIT,
 					   "turning on flush-on-commit");
@@ -782,6 +793,15 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
 			break;
 		}
 	}
+check:
+	/*
+	 * Extra check for current option against current flag
+	 */
+	if (btrfs_test_opt(root, NOLOGREPLAY) && !(new_flags & MS_RDONLY)) {
+		btrfs_err(root->fs_info,
+			  "nologreplay must be used with ro mount option");
+		ret = -EINVAL;
+	}
 out:
 	if (btrfs_fs_compat_ro(root->fs_info, FREE_SPACE_TREE) &&
 	    !btrfs_test_opt(root, FREE_SPACE_TREE) &&
@@ -1192,6 +1212,8 @@ static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
 		seq_puts(seq, ",ssd");
 	if (btrfs_test_opt(root, NOTREELOG))
 		seq_puts(seq, ",notreelog");
+	if (btrfs_test_opt(root, NOLOGREPLAY))
+		seq_puts(seq, ",nologreplay");
 	if (btrfs_test_opt(root, FLUSHONCOMMIT))
 		seq_puts(seq, ",flushoncommit");
 	if (btrfs_test_opt(root, DISCARD))
@@ -1677,7 +1699,7 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data)
 		}
 	}
 
-	ret = btrfs_parse_options(root, data);
+	ret = btrfs_parse_options(root, data, *flags);
 	if (ret) {
 		ret = -EINVAL;
 		goto restore;
-- 
2.7.0




^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH V7 3/3] btrfs: Introduce new mount option alias for nologreplay
  2016-01-19  2:23 [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
  2016-01-19  2:23 ` [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery Qu Wenruo
  2016-01-19  2:23 ` [PATCH V7 2/3] btrfs: Introduce new mount option to disable tree log replay Qu Wenruo
@ 2016-01-19  2:23 ` Qu Wenruo
  2016-01-29  3:17 ` [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
  3 siblings, 0 replies; 9+ messages in thread
From: Qu Wenruo @ 2016-01-19  2:23 UTC (permalink / raw)
  To: linux-btrfs

Introduce new mount option alias "norecovery" for nologreplay, to keep
"norecovery" behavior the same with other filesystems.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
---
v6:
  Newly introduced
v7:
  None
---
 fs/btrfs/super.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 1f97aa1..501a1de 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -304,7 +304,7 @@ enum {
 	Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
 	Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_datacow,
 	Opt_datasum, Opt_treelog, Opt_noinode_cache, Opt_usebackuproot,
-	Opt_nologreplay,
+	Opt_nologreplay, Opt_norecovery,
 #ifdef CONFIG_BTRFS_DEBUG
 	Opt_fragment_data, Opt_fragment_metadata, Opt_fragment_all,
 #endif
@@ -337,6 +337,7 @@ static const match_table_t tokens = {
 	{Opt_notreelog, "notreelog"},
 	{Opt_treelog, "treelog"},
 	{Opt_nologreplay, "nologreplay"},
+	{Opt_norecovery, "norecovery"},
 	{Opt_flushoncommit, "flushoncommit"},
 	{Opt_noflushoncommit, "noflushoncommit"},
 	{Opt_ratio, "metadata_ratio=%d"},
@@ -599,6 +600,7 @@ int btrfs_parse_options(struct btrfs_root *root, char *options,
 			btrfs_clear_and_info(root, NOTREELOG,
 					     "enabling tree log");
 			break;
+		case Opt_norecovery:
 		case Opt_nologreplay:
 			btrfs_set_and_info(root, NOLOGREPLAY,
 					   "disabling log replay at mount time");
-- 
2.7.0




^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems
  2016-01-19  2:23 [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
                   ` (2 preceding siblings ...)
  2016-01-19  2:23 ` [PATCH V7 3/3] btrfs: Introduce new mount option alias for nologreplay Qu Wenruo
@ 2016-01-29  3:17 ` Qu Wenruo
  2016-02-01 23:16   ` David Sterba
  2016-02-12 14:18   ` David Sterba
  3 siblings, 2 replies; 9+ messages in thread
From: Qu Wenruo @ 2016-01-29  3:17 UTC (permalink / raw)
  To: linux-btrfs

Ping.

Any comment?
Or will it be merged into current 4.5?

Thanks,
Qu

Qu Wenruo wrote on 2016/01/19 10:23 +0800:
> 'Norecovery' mount option is almost a standard for all other
> filesystems, including f2fs, ext4, gfs2, nilfs2, and xfs.
> And since current 'recovery' mount option for btrfs is too generic, it's
> better to change btrfs 'recovery' to 'usebackuproot' and then we can
> safely add 'norecovery' and 'nologreplay' mount option for btrfs.
>
> The patch itself is not huge and already tested by others since v2.
> Only mount option name and patch slipting is changing during all
> these version changes.
>
> Qu Wenruo (3):
>    btrfs: Introduce new mount option usebackuproot to replace recovery
>    btrfs: Introduce new mount option to disable tree log replay
>    btrfs: Introduce new mount option alias for nologreplay
>
>   Documentation/filesystems/btrfs.txt | 17 +++++++++++---
>   fs/btrfs/ctree.h                    |  6 +++--
>   fs/btrfs/disk-io.c                  | 15 ++++++++----
>   fs/btrfs/super.c                    | 47 ++++++++++++++++++++++++++++++-------
>   4 files changed, 67 insertions(+), 18 deletions(-)
>



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems
  2016-01-29  3:17 ` [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
@ 2016-02-01 23:16   ` David Sterba
  2016-02-12 14:18   ` David Sterba
  1 sibling, 0 replies; 9+ messages in thread
From: David Sterba @ 2016-02-01 23:16 UTC (permalink / raw)
  To: Qu Wenruo; +Cc: linux-btrfs

On Fri, Jan 29, 2016 at 11:17:48AM +0800, Qu Wenruo wrote:
> Ping.
> 
> Any comment?
> Or will it be merged into current 4.5?

Apparently not for 4.5, I'm going to revisit that for 4.6.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery
  2016-01-19  2:23 ` [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery Qu Wenruo
@ 2016-02-12 13:05   ` David Sterba
  0 siblings, 0 replies; 9+ messages in thread
From: David Sterba @ 2016-02-12 13:05 UTC (permalink / raw)
  To: Qu Wenruo; +Cc: linux-btrfs

On Tue, Jan 19, 2016 at 10:23:02AM +0800, Qu Wenruo wrote:
> diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt
> index c772b47..8e22d92 100644
> --- a/Documentation/filesystems/btrfs.txt
> +++ b/Documentation/filesystems/btrfs.txt
> @@ -168,10 +168,13 @@ Options with (*) are default options and will not show in the mount options.
>    notreelog
>  	Enable/disable the tree logging used for fsync and O_SYNC writes.
>  
> -  recovery
> -	Enable autorecovery attempts if a bad tree root is found at mount time.
> -	Currently this scans a list of several previous tree roots and tries to

We should still mention 'recovery' even if it's obsoleted.

> +  usebackuproot
> +	Enable attempts to use backup tree roots if a bad tree root is found at
> +	mount time.
> +	Currently this scans a list of 4 previous tree roots and tries to
>  	use the first readable.
> +	And since the mount option doesn't affect any behavior after mount,
> +	it won't be shown in mount info.
>  
>    rescan_uuid_tree
>  	Force check and rebuild procedure of the UUID tree. This should not
> diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
> index c5f40dc..47a96a7 100644
> --- a/fs/btrfs/ctree.h
> +++ b/fs/btrfs/ctree.h
> @@ -2241,7 +2241,7 @@ struct btrfs_ioctl_defrag_range_args {
>  #define BTRFS_MOUNT_ENOSPC_DEBUG	 (1 << 15)
>  #define BTRFS_MOUNT_AUTO_DEFRAG		(1 << 16)
>  #define BTRFS_MOUNT_INODE_MAP_CACHE	(1 << 17)
> -#define BTRFS_MOUNT_RECOVERY		(1 << 18)
> +#define BTRFS_MOUNT_USEBACKUPROOT	(1 << 18)
>  #define BTRFS_MOUNT_SKIP_BALANCE	(1 << 19)
>  #define BTRFS_MOUNT_CHECK_INTEGRITY	(1 << 20)
>  #define BTRFS_MOUNT_CHECK_INTEGRITY_INCLUDING_EXTENT_DATA (1 << 21)
> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> index c67c129..6f16557 100644
> --- a/fs/btrfs/disk-io.c
> +++ b/fs/btrfs/disk-io.c
> @@ -3141,6 +3141,12 @@ retry_root_backup:
>  
>  	fs_info->open = 1;
>  
> +	/*
> +	 * backuproot only affect mount behavior, and if open_ctree succeeded,
> +	 * no need to keep the flag
> +	 */
> +	btrfs_clear_opt(fs_info->mount_opt, USEBACKUPROOT);
> +
>  	return 0;
>  
>  fail_qgroup:
> @@ -3195,7 +3201,7 @@ fail:
>  	return err;
>  
>  recovery_tree_root:
> -	if (!btrfs_test_opt(tree_root, RECOVERY))
> +	if (!btrfs_test_opt(tree_root, USEBACKUPROOT))
>  		goto fail_tree_roots;
>  
>  	free_root_pointers(fs_info, 0);
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index 86f7fdc..0842456 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -303,7 +303,7 @@ enum {
>  	Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree,
>  	Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
>  	Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_datacow,
> -	Opt_datasum, Opt_treelog, Opt_noinode_cache,
> +	Opt_datasum, Opt_treelog, Opt_noinode_cache, Opt_usebackuproot,
>  #ifdef CONFIG_BTRFS_DEBUG
>  	Opt_fragment_data, Opt_fragment_metadata, Opt_fragment_all,
>  #endif
> @@ -352,7 +352,8 @@ static const match_table_t tokens = {
>  	{Opt_inode_cache, "inode_cache"},
>  	{Opt_noinode_cache, "noinode_cache"},
>  	{Opt_no_space_cache, "nospace_cache"},
> -	{Opt_recovery, "recovery"},
> +	{Opt_recovery, "recovery"}, /* deprecated */
> +	{Opt_usebackuproot, "usebackuproot"},
>  	{Opt_skip_balance, "skip_balance"},
>  	{Opt_check_integrity, "check_int"},
>  	{Opt_check_integrity_including_extent_data, "check_int_data"},
> @@ -681,8 +682,12 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
>  					     "disabling auto defrag");
>  			break;
>  		case Opt_recovery:
> -			btrfs_info(root->fs_info, "enabling auto recovery");
> -			btrfs_set_opt(info->mount_opt, RECOVERY);
> +			btrfs_warn(root->fs_info,
> +				   "'recovery' is deprecated, use 'usebackuproot' instead");
> +		case Opt_usebackuproot:
> +			btrfs_info(root->fs_info,
> +				   "trying to use backup root at mount time");
> +			btrfs_set_opt(info->mount_opt, USEBACKUPROOT);
>  			break;
>  		case Opt_skip_balance:
>  			btrfs_set_opt(info->mount_opt, SKIP_BALANCE);
> @@ -1213,8 +1218,8 @@ static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
>  		seq_puts(seq, ",inode_cache");
>  	if (btrfs_test_opt(root, SKIP_BALANCE))
>  		seq_puts(seq, ",skip_balance");
> -	if (btrfs_test_opt(root, RECOVERY))
> -		seq_puts(seq, ",recovery");
> +	if (btrfs_test_opt(root, USEBACKUPROOT))
> +		seq_puts(seq, ",usebackuproot");

We can drop this.

>  #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
>  	if (btrfs_test_opt(root, CHECK_INTEGRITY_INCLUDING_EXTENT_DATA))
>  		seq_puts(seq, ",check_int_data");
> -- 
> 2.7.0
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems
  2016-01-29  3:17 ` [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
  2016-02-01 23:16   ` David Sterba
@ 2016-02-12 14:18   ` David Sterba
  2016-02-14  2:05     ` Qu Wenruo
  1 sibling, 1 reply; 9+ messages in thread
From: David Sterba @ 2016-02-12 14:18 UTC (permalink / raw)
  To: Qu Wenruo; +Cc: linux-btrfs

On Fri, Jan 29, 2016 at 11:17:48AM +0800, Qu Wenruo wrote:
> Ping.
> 
> Any comment?
> Or will it be merged into current 4.5?

I've fixed the 1/3 and will add this patchset to my for-next, scheduled
for 4.6.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems
  2016-02-12 14:18   ` David Sterba
@ 2016-02-14  2:05     ` Qu Wenruo
  0 siblings, 0 replies; 9+ messages in thread
From: Qu Wenruo @ 2016-02-14  2:05 UTC (permalink / raw)
  To: dsterba, Qu Wenruo, linux-btrfs

Thanks for the modification.
Qu

On 02/12/2016 10:18 PM, David Sterba wrote:
> On Fri, Jan 29, 2016 at 11:17:48AM +0800, Qu Wenruo wrote:
>> Ping.
>>
>> Any comment?
>> Or will it be merged into current 4.5?
>
> I've fixed the 1/3 and will add this patchset to my for-next, scheduled
> for 4.6.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-02-14  2:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-19  2:23 [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
2016-01-19  2:23 ` [PATCH V7 1/3] btrfs: Introduce new mount option usebackuproot to replace recovery Qu Wenruo
2016-02-12 13:05   ` David Sterba
2016-01-19  2:23 ` [PATCH V7 2/3] btrfs: Introduce new mount option to disable tree log replay Qu Wenruo
2016-01-19  2:23 ` [PATCH V7 3/3] btrfs: Introduce new mount option alias for nologreplay Qu Wenruo
2016-01-29  3:17 ` [PATCH V7 0/3][PULL REQUEST] Unify 'norecovery' bahavior with other filesystems Qu Wenruo
2016-02-01 23:16   ` David Sterba
2016-02-12 14:18   ` David Sterba
2016-02-14  2:05     ` Qu Wenruo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.