mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
Btrfs: Add chunk uuids and update multi-device back references
Block headers now store the chunk tree uuid Chunk items records the device uuid for each stripes Device extent items record better back refs to the chunk tree Block groups record better back refs to the chunk tree The chunk tree format has also changed. The objectid of BTRFS_CHUNK_ITEM_KEY used to be the logical offset of the chunk. Now it is a chunk tree id, with the logical offset being stored in the offset field of the key. This allows a single chunk tree to record multiple logical address spaces, upping the number of bytes indexed by a chunk tree from 2^64 to 2^128. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
b248a41529
commit
e17cade25f
7 changed files with 160 additions and 62 deletions
|
@ -1125,6 +1125,10 @@ struct btrfs_root *open_ctree(struct super_block *sb,
|
|||
blocksize);
|
||||
BUG_ON(!chunk_root->node);
|
||||
|
||||
read_extent_buffer(chunk_root->node, fs_info->chunk_tree_uuid,
|
||||
(unsigned long)btrfs_header_chunk_tree_uuid(chunk_root->node),
|
||||
BTRFS_UUID_SIZE);
|
||||
|
||||
ret = btrfs_read_chunk_tree(chunk_root);
|
||||
BUG_ON(ret);
|
||||
|
||||
|
@ -1229,7 +1233,7 @@ int write_all_supers(struct btrfs_root *root)
|
|||
btrfs_set_device_sector_size(sb, dev_item, dev->sector_size);
|
||||
write_extent_buffer(sb, dev->uuid,
|
||||
(unsigned long)btrfs_device_uuid(dev_item),
|
||||
BTRFS_DEV_UUID_SIZE);
|
||||
BTRFS_UUID_SIZE);
|
||||
|
||||
btrfs_set_header_flag(sb, BTRFS_HEADER_FLAG_WRITTEN);
|
||||
csum_tree_block(root, sb, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue