diff options
author | Chris Mason <chris.mason@oracle.com> | 2007-12-17 20:14:01 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:03:58 -0400 |
commit | be20aa9dbadc8c06283784ee12bbc0d97dea3418 (patch) | |
tree | 52bd8b7e21b36d10dbb48f8b163eea992c9cfd4a /fs/btrfs/ctree.h | |
parent | b6cda9bcb4df7544c67fc3548a53bc1607d59f46 (diff) |
Btrfs: Add mount option to turn off data cow
A number of workloads do not require copy on write data or checksumming.
mount -o nodatasum to disable checksums and -o nodatacow to disable
both copy on write and checksumming.
In nodatacow mode, copy on write is still performed when a given extent
is under snapshot.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r-- | fs/btrfs/ctree.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 5e255cabfd10..b51b021fff85 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -431,6 +431,7 @@ struct btrfs_root { | |||
431 | #define BTRFS_STRING_ITEM_KEY 253 | 431 | #define BTRFS_STRING_ITEM_KEY 253 |
432 | 432 | ||
433 | #define BTRFS_MOUNT_NODATASUM 0x1 | 433 | #define BTRFS_MOUNT_NODATASUM 0x1 |
434 | #define BTRFS_MOUNT_NODATACOW 0x2 | ||
434 | 435 | ||
435 | #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) | 436 | #define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) |
436 | #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) | 437 | #define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) |
@@ -915,6 +916,9 @@ static inline u32 btrfs_level_size(struct btrfs_root *root, int level) { | |||
915 | btrfs_item_offset_nr(leaf, slot))) | 916 | btrfs_item_offset_nr(leaf, slot))) |
916 | 917 | ||
917 | /* extent-tree.c */ | 918 | /* extent-tree.c */ |
919 | u32 btrfs_count_snapshots_in_path(struct btrfs_root *root, | ||
920 | struct btrfs_path *count_path, | ||
921 | u64 first_extent); | ||
918 | int btrfs_extent_post_op(struct btrfs_trans_handle *trans, | 922 | int btrfs_extent_post_op(struct btrfs_trans_handle *trans, |
919 | struct btrfs_root *root); | 923 | struct btrfs_root *root); |
920 | int btrfs_copy_pinned(struct btrfs_root *root, struct extent_map_tree *copy); | 924 | int btrfs_copy_pinned(struct btrfs_root *root, struct extent_map_tree *copy); |
@@ -974,6 +978,10 @@ int btrfs_cow_block(struct btrfs_trans_handle *trans, | |||
974 | struct btrfs_root *root, struct extent_buffer *buf, | 978 | struct btrfs_root *root, struct extent_buffer *buf, |
975 | struct extent_buffer *parent, int parent_slot, | 979 | struct extent_buffer *parent, int parent_slot, |
976 | struct extent_buffer **cow_ret); | 980 | struct extent_buffer **cow_ret); |
981 | int btrfs_copy_root(struct btrfs_trans_handle *trans, | ||
982 | struct btrfs_root *root, | ||
983 | struct extent_buffer *buf, | ||
984 | struct extent_buffer **cow_ret, u64 new_root_objectid); | ||
977 | int btrfs_extend_item(struct btrfs_trans_handle *trans, struct btrfs_root | 985 | int btrfs_extend_item(struct btrfs_trans_handle *trans, struct btrfs_root |
978 | *root, struct btrfs_path *path, u32 data_size); | 986 | *root, struct btrfs_path *path, u32 data_size); |
979 | int btrfs_truncate_item(struct btrfs_trans_handle *trans, | 987 | int btrfs_truncate_item(struct btrfs_trans_handle *trans, |