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@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html