Commit de37aa51 authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba

btrfs: Remove fsid/metadata_fsid fields from btrfs_info

Currently btrfs_fs_info structure contains a copy of the
fsid/metadata_uuid fields. Same values are also contained in the
btrfs_fs_devices structure which fs_info has a reference to. Let's
reduce duplication by removing the fields from fs_info and always refer
to the ones in fs_devices. No functional changes.
Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 56f20f40
...@@ -1720,7 +1720,7 @@ static int btrfsic_test_for_metadata(struct btrfsic_state *state, ...@@ -1720,7 +1720,7 @@ static int btrfsic_test_for_metadata(struct btrfsic_state *state,
num_pages = state->metablock_size >> PAGE_SHIFT; num_pages = state->metablock_size >> PAGE_SHIFT;
h = (struct btrfs_header *)datav[0]; h = (struct btrfs_header *)datav[0];
if (memcmp(h->fsid, fs_info->fsid, BTRFS_FSID_SIZE)) if (memcmp(h->fsid, fs_info->fs_devices->fsid, BTRFS_FSID_SIZE))
return 1; return 1;
for (i = 0; i < num_pages; i++) { for (i = 0; i < num_pages; i++) {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "transaction.h" #include "transaction.h"
#include "print-tree.h" #include "print-tree.h"
#include "locking.h" #include "locking.h"
#include "volumes.h"
static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
*root, struct btrfs_path *path, int level); *root, struct btrfs_path *path, int level);
...@@ -224,7 +225,7 @@ int btrfs_copy_root(struct btrfs_trans_handle *trans, ...@@ -224,7 +225,7 @@ int btrfs_copy_root(struct btrfs_trans_handle *trans,
else else
btrfs_set_header_owner(cow, new_root_objectid); btrfs_set_header_owner(cow, new_root_objectid);
write_extent_buffer_fsid(cow, fs_info->metadata_fsid); write_extent_buffer_fsid(cow, fs_info->fs_devices->metadata_uuid);
WARN_ON(btrfs_header_generation(buf) > trans->transid); WARN_ON(btrfs_header_generation(buf) > trans->transid);
if (new_root_objectid == BTRFS_TREE_RELOC_OBJECTID) if (new_root_objectid == BTRFS_TREE_RELOC_OBJECTID)
...@@ -1050,7 +1051,7 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, ...@@ -1050,7 +1051,7 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
else else
btrfs_set_header_owner(cow, root->root_key.objectid); btrfs_set_header_owner(cow, root->root_key.objectid);
write_extent_buffer_fsid(cow, fs_info->metadata_fsid); write_extent_buffer_fsid(cow, fs_info->fs_devices->metadata_uuid);
ret = update_ref_for_cow(trans, root, buf, cow, &last_ref); ret = update_ref_for_cow(trans, root, buf, cow, &last_ref);
if (ret) { if (ret) {
......
...@@ -773,10 +773,6 @@ bool btrfs_pinned_by_swapfile(struct btrfs_fs_info *fs_info, void *ptr); ...@@ -773,10 +773,6 @@ bool btrfs_pinned_by_swapfile(struct btrfs_fs_info *fs_info, void *ptr);
#define BTRFS_FS_BALANCE_RUNNING 18 #define BTRFS_FS_BALANCE_RUNNING 18
struct btrfs_fs_info { struct btrfs_fs_info {
/* User-visible fs UUID */
u8 fsid[BTRFS_FSID_SIZE];
/* UUID written to btree blocks */
u8 metadata_fsid[BTRFS_FSID_SIZE];
u8 chunk_tree_uuid[BTRFS_UUID_SIZE]; u8 chunk_tree_uuid[BTRFS_UUID_SIZE];
unsigned long flags; unsigned long flags;
struct btrfs_root *extent_root; struct btrfs_root *extent_root;
......
...@@ -542,7 +542,7 @@ static int csum_dirty_buffer(struct btrfs_fs_info *fs_info, struct page *page) ...@@ -542,7 +542,7 @@ static int csum_dirty_buffer(struct btrfs_fs_info *fs_info, struct page *page)
if (WARN_ON(!PageUptodate(page))) if (WARN_ON(!PageUptodate(page)))
return -EUCLEAN; return -EUCLEAN;
ASSERT(memcmp_extent_buffer(eb, fs_info->metadata_fsid, ASSERT(memcmp_extent_buffer(eb, fs_info->fs_devices->metadata_uuid,
btrfs_header_fsid(), BTRFS_FSID_SIZE) == 0); btrfs_header_fsid(), BTRFS_FSID_SIZE) == 0);
return csum_tree_block(fs_info, eb, 0); return csum_tree_block(fs_info, eb, 0);
...@@ -2456,11 +2456,11 @@ static int validate_super(struct btrfs_fs_info *fs_info, ...@@ -2456,11 +2456,11 @@ static int validate_super(struct btrfs_fs_info *fs_info,
ret = -EINVAL; ret = -EINVAL;
} }
if (memcmp(fs_info->metadata_fsid, sb->dev_item.fsid, if (memcmp(fs_info->fs_devices->metadata_uuid, sb->dev_item.fsid,
BTRFS_FSID_SIZE) != 0) { BTRFS_FSID_SIZE) != 0) {
btrfs_err(fs_info, btrfs_err(fs_info,
"dev_item UUID does not match metadata fsid: %pU != %pU", "dev_item UUID does not match metadata fsid: %pU != %pU",
fs_info->metadata_fsid, sb->dev_item.fsid); fs_info->fs_devices->metadata_uuid, sb->dev_item.fsid);
ret = -EINVAL; ret = -EINVAL;
} }
...@@ -2803,14 +2803,16 @@ int open_ctree(struct super_block *sb, ...@@ -2803,14 +2803,16 @@ int open_ctree(struct super_block *sb,
sizeof(*fs_info->super_for_commit)); sizeof(*fs_info->super_for_commit));
brelse(bh); brelse(bh);
memcpy(fs_info->fsid, fs_info->super_copy->fsid, BTRFS_FSID_SIZE); ASSERT(!memcmp(fs_info->fs_devices->fsid, fs_info->super_copy->fsid,
BTRFS_FSID_SIZE));
if (btrfs_fs_incompat(fs_info, METADATA_UUID)) { if (btrfs_fs_incompat(fs_info, METADATA_UUID)) {
memcpy(fs_info->metadata_fsid, ASSERT(!memcmp(fs_info->fs_devices->metadata_uuid,
fs_info->super_copy->metadata_uuid, BTRFS_FSID_SIZE); fs_info->super_copy->metadata_uuid,
} else { BTRFS_FSID_SIZE));
memcpy(fs_info->metadata_fsid, fs_info->fsid, BTRFS_FSID_SIZE);
} }
ret = btrfs_validate_mount_super(fs_info); ret = btrfs_validate_mount_super(fs_info);
if (ret) { if (ret) {
btrfs_err(fs_info, "superblock contains fatal errors"); btrfs_err(fs_info, "superblock contains fatal errors");
...@@ -2930,7 +2932,7 @@ int open_ctree(struct super_block *sb, ...@@ -2930,7 +2932,7 @@ int open_ctree(struct super_block *sb,
sb->s_blocksize = sectorsize; sb->s_blocksize = sectorsize;
sb->s_blocksize_bits = blksize_bits(sectorsize); sb->s_blocksize_bits = blksize_bits(sectorsize);
memcpy(&sb->s_uuid, fs_info->fsid, BTRFS_FSID_SIZE); memcpy(&sb->s_uuid, fs_info->fs_devices->fsid, BTRFS_FSID_SIZE);
mutex_lock(&fs_info->chunk_mutex); mutex_lock(&fs_info->chunk_mutex);
ret = btrfs_read_sys_array(fs_info); ret = btrfs_read_sys_array(fs_info);
......
...@@ -8312,7 +8312,7 @@ btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root, ...@@ -8312,7 +8312,7 @@ btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root,
btrfs_set_header_generation(buf, trans->transid); btrfs_set_header_generation(buf, trans->transid);
btrfs_set_header_backref_rev(buf, BTRFS_MIXED_BACKREF_REV); btrfs_set_header_backref_rev(buf, BTRFS_MIXED_BACKREF_REV);
btrfs_set_header_owner(buf, owner); btrfs_set_header_owner(buf, owner);
write_extent_buffer_fsid(buf, fs_info->metadata_fsid); write_extent_buffer_fsid(buf, fs_info->fs_devices->metadata_uuid);
write_extent_buffer_chunk_tree_uuid(buf, fs_info->chunk_tree_uuid); write_extent_buffer_chunk_tree_uuid(buf, fs_info->chunk_tree_uuid);
if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) { if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
buf->log_index = root->log_transid % 2; buf->log_index = root->log_transid % 2;
......
...@@ -3150,7 +3150,7 @@ static long btrfs_ioctl_fs_info(struct btrfs_fs_info *fs_info, ...@@ -3150,7 +3150,7 @@ static long btrfs_ioctl_fs_info(struct btrfs_fs_info *fs_info,
} }
rcu_read_unlock(); rcu_read_unlock();
memcpy(&fi_args->fsid, fs_info->fsid, sizeof(fi_args->fsid)); memcpy(&fi_args->fsid, fs_devices->fsid, sizeof(fi_args->fsid));
fi_args->nodesize = fs_info->nodesize; fi_args->nodesize = fs_info->nodesize;
fi_args->sectorsize = fs_info->sectorsize; fi_args->sectorsize = fs_info->sectorsize;
fi_args->clone_alignment = fs_info->sectorsize; fi_args->clone_alignment = fs_info->sectorsize;
......
...@@ -2090,7 +2090,7 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf) ...@@ -2090,7 +2090,7 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
u64 total_free_data = 0; u64 total_free_data = 0;
u64 total_free_meta = 0; u64 total_free_meta = 0;
int bits = dentry->d_sb->s_blocksize_bits; int bits = dentry->d_sb->s_blocksize_bits;
__be32 *fsid = (__be32 *)fs_info->fsid; __be32 *fsid = (__be32 *)fs_info->fs_devices->fsid;
unsigned factor = 1; unsigned factor = 1;
struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv; struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv;
int ret; int ret;
......
...@@ -1780,8 +1780,8 @@ static int btrfs_add_dev_item(struct btrfs_trans_handle *trans, ...@@ -1780,8 +1780,8 @@ static int btrfs_add_dev_item(struct btrfs_trans_handle *trans,
ptr = btrfs_device_uuid(dev_item); ptr = btrfs_device_uuid(dev_item);
write_extent_buffer(leaf, device->uuid, ptr, BTRFS_UUID_SIZE); write_extent_buffer(leaf, device->uuid, ptr, BTRFS_UUID_SIZE);
ptr = btrfs_device_fsid(dev_item); ptr = btrfs_device_fsid(dev_item);
write_extent_buffer(leaf, trans->fs_info->metadata_fsid, ptr, write_extent_buffer(leaf, trans->fs_info->fs_devices->metadata_uuid,
BTRFS_FSID_SIZE); ptr, BTRFS_FSID_SIZE);
btrfs_mark_buffer_dirty(leaf); btrfs_mark_buffer_dirty(leaf);
ret = 0; ret = 0;
...@@ -2324,9 +2324,7 @@ static int btrfs_prepare_sprout(struct btrfs_fs_info *fs_info) ...@@ -2324,9 +2324,7 @@ static int btrfs_prepare_sprout(struct btrfs_fs_info *fs_info)
fs_devices->seed = seed_devices; fs_devices->seed = seed_devices;
generate_random_uuid(fs_devices->fsid); generate_random_uuid(fs_devices->fsid);
memcpy(fs_info->fsid, fs_devices->fsid, BTRFS_FSID_SIZE);
memcpy(fs_devices->metadata_uuid, fs_devices->fsid, BTRFS_FSID_SIZE); memcpy(fs_devices->metadata_uuid, fs_devices->fsid, BTRFS_FSID_SIZE);
memcpy(fs_info->metadata_fsid, fs_devices->fsid, BTRFS_FSID_SIZE);
memcpy(disk_super->fsid, fs_devices->fsid, BTRFS_FSID_SIZE); memcpy(disk_super->fsid, fs_devices->fsid, BTRFS_FSID_SIZE);
mutex_unlock(&fs_devices->device_list_mutex); mutex_unlock(&fs_devices->device_list_mutex);
...@@ -2568,7 +2566,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path ...@@ -2568,7 +2566,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
* so rename the fsid on the sysfs * so rename the fsid on the sysfs
*/ */
snprintf(fsid_buf, BTRFS_UUID_UNPARSED_SIZE, "%pU", snprintf(fsid_buf, BTRFS_UUID_UNPARSED_SIZE, "%pU",
fs_info->fsid); fs_info->fs_devices->fsid);
if (kobject_rename(&fs_devices->fsid_kobj, fsid_buf)) if (kobject_rename(&fs_devices->fsid_kobj, fsid_buf))
btrfs_warn(fs_info, btrfs_warn(fs_info,
"sysfs: failed to create fsid for sprout"); "sysfs: failed to create fsid for sprout");
...@@ -6722,7 +6720,7 @@ static int read_one_dev(struct btrfs_fs_info *fs_info, ...@@ -6722,7 +6720,7 @@ static int read_one_dev(struct btrfs_fs_info *fs_info,
read_extent_buffer(leaf, fs_uuid, btrfs_device_fsid(dev_item), read_extent_buffer(leaf, fs_uuid, btrfs_device_fsid(dev_item),
BTRFS_FSID_SIZE); BTRFS_FSID_SIZE);
if (memcmp(fs_uuid, fs_info->metadata_fsid, BTRFS_FSID_SIZE)) { if (memcmp(fs_uuid, fs_devices->metadata_uuid, BTRFS_FSID_SIZE)) {
fs_devices = open_seed_devices(fs_info, fs_uuid); fs_devices = open_seed_devices(fs_info, fs_uuid);
if (IS_ERR(fs_devices)) if (IS_ERR(fs_devices))
return PTR_ERR(fs_devices); return PTR_ERR(fs_devices);
......
...@@ -92,7 +92,7 @@ TRACE_DEFINE_ENUM(COMMIT_TRANS); ...@@ -92,7 +92,7 @@ TRACE_DEFINE_ENUM(COMMIT_TRANS);
#define TP_STRUCT__entry_fsid __array(u8, fsid, BTRFS_FSID_SIZE) #define TP_STRUCT__entry_fsid __array(u8, fsid, BTRFS_FSID_SIZE)
#define TP_fast_assign_fsid(fs_info) \ #define TP_fast_assign_fsid(fs_info) \
memcpy(__entry->fsid, fs_info->fsid, BTRFS_FSID_SIZE) memcpy(__entry->fsid, fs_info->fs_devices->fsid, BTRFS_FSID_SIZE)
#define TP_STRUCT__entry_btrfs(args...) \ #define TP_STRUCT__entry_btrfs(args...) \
TP_STRUCT__entry( \ TP_STRUCT__entry( \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment