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 [email protected]
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to