Commit 842bef58 authored by Qu Wenruo's avatar Qu Wenruo Committed by Chris Mason

btrfs: Add "barrier" option to support "-o remount,barrier"

Btrfs can be remounted without barrier, but there is no "barrier" option
so nobody can remount btrfs back with barrier on. Only umount and
mount again can re-enable barrier.(Quite awkward)

Also the mount options in the document is also changed slightly for the
further pairing options changes.
Reported-by: default avatarDaniel Blueman <daniel@quora.org>
Signed-off-by: default avatarQu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: default avatarMike Fleetwood <mike.fleetwood@googlemail.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.cz>
Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent e8117c26
...@@ -38,7 +38,7 @@ Mount Options ...@@ -38,7 +38,7 @@ Mount Options
============= =============
When mounting a btrfs filesystem, the following option are accepted. When mounting a btrfs filesystem, the following option are accepted.
Unless otherwise specified, all options default to off. Options with (*) are default options and will not show in the mount options.
alloc_start=<bytes> alloc_start=<bytes>
Debugging option to force all block allocations above a certain Debugging option to force all block allocations above a certain
...@@ -138,12 +138,13 @@ Unless otherwise specified, all options default to off. ...@@ -138,12 +138,13 @@ Unless otherwise specified, all options default to off.
Disable support for Posix Access Control Lists (ACLs). See the Disable support for Posix Access Control Lists (ACLs). See the
acl(5) manual page for more information about ACLs. acl(5) manual page for more information about ACLs.
barrier(*)
nobarrier nobarrier
Disables the use of block layer write barriers. Write barriers ensure Enable/disable the use of block layer write barriers. Write barriers
that certain IOs make it through the device cache and are on persistent ensure that certain IOs make it through the device cache and are on
storage. If used on a device with a volatile (non-battery-backed) persistent storage. If disabled on a device with a volatile
write-back cache, this option will lead to filesystem corruption on a (non-battery-backed) write-back cache, nobarrier option will lead to
system crash or power loss. filesystem corruption on a system crash or power loss.
nodatacow nodatacow
Disable data copy-on-write for newly created files. Implies nodatasum, Disable data copy-on-write for newly created files. Implies nodatasum,
......
...@@ -323,7 +323,7 @@ enum { ...@@ -323,7 +323,7 @@ enum {
Opt_no_space_cache, Opt_recovery, Opt_skip_balance, Opt_no_space_cache, Opt_recovery, Opt_skip_balance,
Opt_check_integrity, Opt_check_integrity_including_extent_data, Opt_check_integrity, Opt_check_integrity_including_extent_data,
Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree, Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree,
Opt_commit_interval, Opt_commit_interval, Opt_barrier,
Opt_err, Opt_err,
}; };
...@@ -335,6 +335,7 @@ static match_table_t tokens = { ...@@ -335,6 +335,7 @@ static match_table_t tokens = {
{Opt_nodatasum, "nodatasum"}, {Opt_nodatasum, "nodatasum"},
{Opt_nodatacow, "nodatacow"}, {Opt_nodatacow, "nodatacow"},
{Opt_nobarrier, "nobarrier"}, {Opt_nobarrier, "nobarrier"},
{Opt_barrier, "barrier"},
{Opt_max_inline, "max_inline=%s"}, {Opt_max_inline, "max_inline=%s"},
{Opt_alloc_start, "alloc_start=%s"}, {Opt_alloc_start, "alloc_start=%s"},
{Opt_thread_pool, "thread_pool=%d"}, {Opt_thread_pool, "thread_pool=%d"},
...@@ -494,6 +495,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) ...@@ -494,6 +495,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
btrfs_clear_opt(info->mount_opt, SSD); btrfs_clear_opt(info->mount_opt, SSD);
btrfs_clear_opt(info->mount_opt, SSD_SPREAD); btrfs_clear_opt(info->mount_opt, SSD_SPREAD);
break; break;
case Opt_barrier:
if (btrfs_test_opt(root, NOBARRIER))
btrfs_info(root->fs_info, "turning on barriers");
btrfs_clear_opt(info->mount_opt, NOBARRIER);
break;
case Opt_nobarrier: case Opt_nobarrier:
btrfs_info(root->fs_info, "turning off barriers"); btrfs_info(root->fs_info, "turning off barriers");
btrfs_set_opt(info->mount_opt, NOBARRIER); btrfs_set_opt(info->mount_opt, NOBARRIER);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment