btrfs: Add datacow mount option.

Add datacow mount option to enable copy-on-write with
remount option.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
Qu Wenruo 2014-01-06 09:58:31 +08:00 коммит произвёл Chris Mason
Родитель bd0330ad21
Коммит a258af7a3e
2 изменённых файлов: 10 добавлений и 3 удалений

Просмотреть файл

@ -154,9 +154,10 @@ Options with (*) are default options and will not show in the mount options.
(non-battery-backed) write-back cache, nobarrier option will lead to (non-battery-backed) write-back cache, nobarrier option will lead to
filesystem corruption on a system crash or power loss. filesystem corruption on a system crash or power loss.
datacow(*)
nodatacow nodatacow
Disable data copy-on-write for newly created files. Implies nodatasum, Enable/disable data copy-on-write for newly created files.
and disables all compression. Nodatacow implies nodatasum, and disables all compression.
nodatasum nodatasum
Disable data checksumming for newly created files. Disable data checksumming for newly created files.

Просмотреть файл

@ -324,7 +324,7 @@ enum {
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_barrier, Opt_nodefrag, Opt_nodiscard, Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl, Opt_datacow,
Opt_err, Opt_err,
}; };
@ -335,6 +335,7 @@ static match_table_t tokens = {
{Opt_device, "device=%s"}, {Opt_device, "device=%s"},
{Opt_nodatasum, "nodatasum"}, {Opt_nodatasum, "nodatasum"},
{Opt_nodatacow, "nodatacow"}, {Opt_nodatacow, "nodatacow"},
{Opt_datacow, "datacow"},
{Opt_nobarrier, "nobarrier"}, {Opt_nobarrier, "nobarrier"},
{Opt_barrier, "barrier"}, {Opt_barrier, "barrier"},
{Opt_max_inline, "max_inline=%s"}, {Opt_max_inline, "max_inline=%s"},
@ -446,6 +447,11 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
btrfs_set_opt(info->mount_opt, NODATACOW); btrfs_set_opt(info->mount_opt, NODATACOW);
btrfs_set_opt(info->mount_opt, NODATASUM); btrfs_set_opt(info->mount_opt, NODATASUM);
break; break;
case Opt_datacow:
if (btrfs_test_opt(root, NODATACOW))
btrfs_info(root->fs_info, "setting datacow");
btrfs_clear_opt(info->mount_opt, NODATACOW);
break;
case Opt_compress_force: case Opt_compress_force:
case Opt_compress_force_type: case Opt_compress_force_type:
compress_force = true; compress_force = true;