diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2014-01-05 20:58:25 -0500 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-01-28 16:20:16 -0500 |
commit | 842bef5891aaf13e2dede01d86397d810fde2dd8 (patch) | |
tree | 33b072d33c9c2479cf78e0fdc31bb8be03985349 /fs | |
parent | e8117c26b24098496b6011aabe84e43e0189a506 (diff) |
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: Daniel Blueman <daniel@quora.org>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: Mike Fleetwood <mike.fleetwood@googlemail.com>
Reviewed-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/super.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 15b6a1d4c533..b02d25a64b2e 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -323,7 +323,7 @@ enum { | |||
323 | Opt_no_space_cache, Opt_recovery, Opt_skip_balance, | 323 | Opt_no_space_cache, Opt_recovery, Opt_skip_balance, |
324 | Opt_check_integrity, Opt_check_integrity_including_extent_data, | 324 | Opt_check_integrity, Opt_check_integrity_including_extent_data, |
325 | Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree, | 325 | Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree, |
326 | Opt_commit_interval, | 326 | Opt_commit_interval, Opt_barrier, |
327 | Opt_err, | 327 | Opt_err, |
328 | }; | 328 | }; |
329 | 329 | ||
@@ -335,6 +335,7 @@ static match_table_t tokens = { | |||
335 | {Opt_nodatasum, "nodatasum"}, | 335 | {Opt_nodatasum, "nodatasum"}, |
336 | {Opt_nodatacow, "nodatacow"}, | 336 | {Opt_nodatacow, "nodatacow"}, |
337 | {Opt_nobarrier, "nobarrier"}, | 337 | {Opt_nobarrier, "nobarrier"}, |
338 | {Opt_barrier, "barrier"}, | ||
338 | {Opt_max_inline, "max_inline=%s"}, | 339 | {Opt_max_inline, "max_inline=%s"}, |
339 | {Opt_alloc_start, "alloc_start=%s"}, | 340 | {Opt_alloc_start, "alloc_start=%s"}, |
340 | {Opt_thread_pool, "thread_pool=%d"}, | 341 | {Opt_thread_pool, "thread_pool=%d"}, |
@@ -494,6 +495,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) | |||
494 | btrfs_clear_opt(info->mount_opt, SSD); | 495 | btrfs_clear_opt(info->mount_opt, SSD); |
495 | btrfs_clear_opt(info->mount_opt, SSD_SPREAD); | 496 | btrfs_clear_opt(info->mount_opt, SSD_SPREAD); |
496 | break; | 497 | break; |
498 | case Opt_barrier: | ||
499 | if (btrfs_test_opt(root, NOBARRIER)) | ||
500 | btrfs_info(root->fs_info, "turning on barriers"); | ||
501 | btrfs_clear_opt(info->mount_opt, NOBARRIER); | ||
502 | break; | ||
497 | case Opt_nobarrier: | 503 | case Opt_nobarrier: |
498 | btrfs_info(root->fs_info, "turning off barriers"); | 504 | btrfs_info(root->fs_info, "turning off barriers"); |
499 | btrfs_set_opt(info->mount_opt, NOBARRIER); | 505 | btrfs_set_opt(info->mount_opt, NOBARRIER); |