diff options
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r-- | fs/btrfs/ctree.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index c4c6c127323b..5ff74282a620 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -177,6 +177,9 @@ struct btrfs_dev_item { | |||
177 | /* type and info about this device */ | 177 | /* type and info about this device */ |
178 | __le64 type; | 178 | __le64 type; |
179 | 179 | ||
180 | /* expected generation for this device */ | ||
181 | __le64 generation; | ||
182 | |||
180 | /* grouping information for allocation decisions */ | 183 | /* grouping information for allocation decisions */ |
181 | __le32 dev_group; | 184 | __le32 dev_group; |
182 | 185 | ||
@@ -188,6 +191,9 @@ struct btrfs_dev_item { | |||
188 | 191 | ||
189 | /* btrfs generated uuid for this device */ | 192 | /* btrfs generated uuid for this device */ |
190 | u8 uuid[BTRFS_UUID_SIZE]; | 193 | u8 uuid[BTRFS_UUID_SIZE]; |
194 | |||
195 | /* uuid of FS who owns this device */ | ||
196 | u8 fsid[BTRFS_UUID_SIZE]; | ||
191 | } __attribute__ ((__packed__)); | 197 | } __attribute__ ((__packed__)); |
192 | 198 | ||
193 | struct btrfs_stripe { | 199 | struct btrfs_stripe { |
@@ -263,6 +269,7 @@ struct btrfs_header { | |||
263 | sizeof(struct btrfs_item) - \ | 269 | sizeof(struct btrfs_item) - \ |
264 | sizeof(struct btrfs_file_extent_item)) | 270 | sizeof(struct btrfs_file_extent_item)) |
265 | 271 | ||
272 | #define BTRFS_SUPER_FLAG_SEEDING (1ULL << 32) | ||
266 | 273 | ||
267 | /* | 274 | /* |
268 | * this is a very generous portion of the super block, giving us | 275 | * this is a very generous portion of the super block, giving us |
@@ -278,7 +285,7 @@ struct btrfs_header { | |||
278 | struct btrfs_super_block { | 285 | struct btrfs_super_block { |
279 | u8 csum[BTRFS_CSUM_SIZE]; | 286 | u8 csum[BTRFS_CSUM_SIZE]; |
280 | /* the first 4 fields must match struct btrfs_header */ | 287 | /* the first 4 fields must match struct btrfs_header */ |
281 | u8 fsid[16]; /* FS specific uuid */ | 288 | u8 fsid[BTRFS_FSID_SIZE]; /* FS specific uuid */ |
282 | __le64 bytenr; /* this block number */ | 289 | __le64 bytenr; /* this block number */ |
283 | __le64 flags; | 290 | __le64 flags; |
284 | 291 | ||
@@ -941,6 +948,7 @@ BTRFS_SETGET_FUNCS(device_id, struct btrfs_dev_item, devid, 64); | |||
941 | BTRFS_SETGET_FUNCS(device_group, struct btrfs_dev_item, dev_group, 32); | 948 | BTRFS_SETGET_FUNCS(device_group, struct btrfs_dev_item, dev_group, 32); |
942 | BTRFS_SETGET_FUNCS(device_seek_speed, struct btrfs_dev_item, seek_speed, 8); | 949 | BTRFS_SETGET_FUNCS(device_seek_speed, struct btrfs_dev_item, seek_speed, 8); |
943 | BTRFS_SETGET_FUNCS(device_bandwidth, struct btrfs_dev_item, bandwidth, 8); | 950 | BTRFS_SETGET_FUNCS(device_bandwidth, struct btrfs_dev_item, bandwidth, 8); |
951 | BTRFS_SETGET_FUNCS(device_generation, struct btrfs_dev_item, generation, 64); | ||
944 | 952 | ||
945 | BTRFS_SETGET_STACK_FUNCS(stack_device_type, struct btrfs_dev_item, type, 64); | 953 | BTRFS_SETGET_STACK_FUNCS(stack_device_type, struct btrfs_dev_item, type, 64); |
946 | BTRFS_SETGET_STACK_FUNCS(stack_device_total_bytes, struct btrfs_dev_item, | 954 | BTRFS_SETGET_STACK_FUNCS(stack_device_total_bytes, struct btrfs_dev_item, |
@@ -960,12 +968,19 @@ BTRFS_SETGET_STACK_FUNCS(stack_device_seek_speed, struct btrfs_dev_item, | |||
960 | seek_speed, 8); | 968 | seek_speed, 8); |
961 | BTRFS_SETGET_STACK_FUNCS(stack_device_bandwidth, struct btrfs_dev_item, | 969 | BTRFS_SETGET_STACK_FUNCS(stack_device_bandwidth, struct btrfs_dev_item, |
962 | bandwidth, 8); | 970 | bandwidth, 8); |
971 | BTRFS_SETGET_STACK_FUNCS(stack_device_generation, struct btrfs_dev_item, | ||
972 | generation, 64); | ||
963 | 973 | ||
964 | static inline char *btrfs_device_uuid(struct btrfs_dev_item *d) | 974 | static inline char *btrfs_device_uuid(struct btrfs_dev_item *d) |
965 | { | 975 | { |
966 | return (char *)d + offsetof(struct btrfs_dev_item, uuid); | 976 | return (char *)d + offsetof(struct btrfs_dev_item, uuid); |
967 | } | 977 | } |
968 | 978 | ||
979 | static inline char *btrfs_device_fsid(struct btrfs_dev_item *d) | ||
980 | { | ||
981 | return (char *)d + offsetof(struct btrfs_dev_item, fsid); | ||
982 | } | ||
983 | |||
969 | BTRFS_SETGET_FUNCS(chunk_length, struct btrfs_chunk, length, 64); | 984 | BTRFS_SETGET_FUNCS(chunk_length, struct btrfs_chunk, length, 64); |
970 | BTRFS_SETGET_FUNCS(chunk_owner, struct btrfs_chunk, owner, 64); | 985 | BTRFS_SETGET_FUNCS(chunk_owner, struct btrfs_chunk, owner, 64); |
971 | BTRFS_SETGET_FUNCS(chunk_stripe_len, struct btrfs_chunk, stripe_len, 64); | 986 | BTRFS_SETGET_FUNCS(chunk_stripe_len, struct btrfs_chunk, stripe_len, 64); |
@@ -1661,6 +1676,7 @@ int btrfs_reloc_tree_cache_ref(struct btrfs_trans_handle *trans, | |||
1661 | struct extent_buffer *buf, u64 orig_start); | 1676 | struct extent_buffer *buf, u64 orig_start); |
1662 | int btrfs_add_dead_reloc_root(struct btrfs_root *root); | 1677 | int btrfs_add_dead_reloc_root(struct btrfs_root *root); |
1663 | int btrfs_cleanup_reloc_trees(struct btrfs_root *root); | 1678 | int btrfs_cleanup_reloc_trees(struct btrfs_root *root); |
1679 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags); | ||
1664 | /* ctree.c */ | 1680 | /* ctree.c */ |
1665 | int btrfs_previous_item(struct btrfs_root *root, | 1681 | int btrfs_previous_item(struct btrfs_root *root, |
1666 | struct btrfs_path *path, u64 min_objectid, | 1682 | struct btrfs_path *path, u64 min_objectid, |