disk-io.c (2e608bd1dd51ee962bded788caee4aa812729e87) | disk-io.c (29cbcf401793f4e2c871c846edc2191731df2c41) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2007 Oracle. All rights reserved. 4 */ 5 6#include <linux/fs.h> 7#include <linux/blkdev.h> 8#include <linux/radix-tree.h> --- 1543 unchanged lines hidden (view full) --- 1552} 1553 1554static struct btrfs_root *btrfs_get_global_root(struct btrfs_fs_info *fs_info, 1555 u64 objectid) 1556{ 1557 if (objectid == BTRFS_ROOT_TREE_OBJECTID) 1558 return btrfs_grab_root(fs_info->tree_root); 1559 if (objectid == BTRFS_EXTENT_TREE_OBJECTID) | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2007 Oracle. All rights reserved. 4 */ 5 6#include <linux/fs.h> 7#include <linux/blkdev.h> 8#include <linux/radix-tree.h> --- 1543 unchanged lines hidden (view full) --- 1552} 1553 1554static struct btrfs_root *btrfs_get_global_root(struct btrfs_fs_info *fs_info, 1555 u64 objectid) 1556{ 1557 if (objectid == BTRFS_ROOT_TREE_OBJECTID) 1558 return btrfs_grab_root(fs_info->tree_root); 1559 if (objectid == BTRFS_EXTENT_TREE_OBJECTID) |
1560 return btrfs_grab_root(fs_info->extent_root); | 1560 return btrfs_grab_root(fs_info->_extent_root); |
1561 if (objectid == BTRFS_CHUNK_TREE_OBJECTID) 1562 return btrfs_grab_root(fs_info->chunk_root); 1563 if (objectid == BTRFS_DEV_TREE_OBJECTID) 1564 return btrfs_grab_root(fs_info->dev_root); 1565 if (objectid == BTRFS_CSUM_TREE_OBJECTID) 1566 return btrfs_grab_root(fs_info->csum_root); 1567 if (objectid == BTRFS_QUOTA_TREE_OBJECTID) 1568 return btrfs_grab_root(fs_info->quota_root) ? --- 56 unchanged lines hidden (view full) --- 1625 percpu_counter_destroy(&fs_info->delalloc_bytes); 1626 percpu_counter_destroy(&fs_info->ordered_bytes); 1627 percpu_counter_destroy(&fs_info->dev_replace.bio_counter); 1628 btrfs_free_csum_hash(fs_info); 1629 btrfs_free_stripe_hash_table(fs_info); 1630 btrfs_free_ref_cache(fs_info); 1631 kfree(fs_info->balance_ctl); 1632 kfree(fs_info->delayed_root); | 1561 if (objectid == BTRFS_CHUNK_TREE_OBJECTID) 1562 return btrfs_grab_root(fs_info->chunk_root); 1563 if (objectid == BTRFS_DEV_TREE_OBJECTID) 1564 return btrfs_grab_root(fs_info->dev_root); 1565 if (objectid == BTRFS_CSUM_TREE_OBJECTID) 1566 return btrfs_grab_root(fs_info->csum_root); 1567 if (objectid == BTRFS_QUOTA_TREE_OBJECTID) 1568 return btrfs_grab_root(fs_info->quota_root) ? --- 56 unchanged lines hidden (view full) --- 1625 percpu_counter_destroy(&fs_info->delalloc_bytes); 1626 percpu_counter_destroy(&fs_info->ordered_bytes); 1627 percpu_counter_destroy(&fs_info->dev_replace.bio_counter); 1628 btrfs_free_csum_hash(fs_info); 1629 btrfs_free_stripe_hash_table(fs_info); 1630 btrfs_free_ref_cache(fs_info); 1631 kfree(fs_info->balance_ctl); 1632 kfree(fs_info->delayed_root); |
1633 btrfs_put_root(fs_info->extent_root); | 1633 btrfs_put_root(fs_info->_extent_root); |
1634 btrfs_put_root(fs_info->tree_root); 1635 btrfs_put_root(fs_info->chunk_root); 1636 btrfs_put_root(fs_info->dev_root); 1637 btrfs_put_root(fs_info->csum_root); 1638 btrfs_put_root(fs_info->quota_root); 1639 btrfs_put_root(fs_info->uuid_root); 1640 btrfs_put_root(fs_info->free_space_root); 1641 btrfs_put_root(fs_info->fs_root); --- 361 unchanged lines hidden (view full) --- 2003 * copy all the root pointers into the super backup array. 2004 * this will bump the backup pointer by one when it is 2005 * done 2006 */ 2007static void backup_super_roots(struct btrfs_fs_info *info) 2008{ 2009 const int next_backup = info->backup_root_index; 2010 struct btrfs_root_backup *root_backup; | 1634 btrfs_put_root(fs_info->tree_root); 1635 btrfs_put_root(fs_info->chunk_root); 1636 btrfs_put_root(fs_info->dev_root); 1637 btrfs_put_root(fs_info->csum_root); 1638 btrfs_put_root(fs_info->quota_root); 1639 btrfs_put_root(fs_info->uuid_root); 1640 btrfs_put_root(fs_info->free_space_root); 1641 btrfs_put_root(fs_info->fs_root); --- 361 unchanged lines hidden (view full) --- 2003 * copy all the root pointers into the super backup array. 2004 * this will bump the backup pointer by one when it is 2005 * done 2006 */ 2007static void backup_super_roots(struct btrfs_fs_info *info) 2008{ 2009 const int next_backup = info->backup_root_index; 2010 struct btrfs_root_backup *root_backup; |
2011 struct btrfs_root *extent_root = btrfs_extent_root(info, 0); |
|
2011 2012 root_backup = info->super_for_commit->super_roots + next_backup; 2013 2014 /* 2015 * make sure all of our padding and empty slots get zero filled 2016 * regardless of which ones we use today 2017 */ 2018 memset(root_backup, 0, sizeof(*root_backup)); --- 8 unchanged lines hidden (view full) --- 2027 btrfs_header_level(info->tree_root->node)); 2028 2029 btrfs_set_backup_chunk_root(root_backup, info->chunk_root->node->start); 2030 btrfs_set_backup_chunk_root_gen(root_backup, 2031 btrfs_header_generation(info->chunk_root->node)); 2032 btrfs_set_backup_chunk_root_level(root_backup, 2033 btrfs_header_level(info->chunk_root->node)); 2034 | 2012 2013 root_backup = info->super_for_commit->super_roots + next_backup; 2014 2015 /* 2016 * make sure all of our padding and empty slots get zero filled 2017 * regardless of which ones we use today 2018 */ 2019 memset(root_backup, 0, sizeof(*root_backup)); --- 8 unchanged lines hidden (view full) --- 2028 btrfs_header_level(info->tree_root->node)); 2029 2030 btrfs_set_backup_chunk_root(root_backup, info->chunk_root->node->start); 2031 btrfs_set_backup_chunk_root_gen(root_backup, 2032 btrfs_header_generation(info->chunk_root->node)); 2033 btrfs_set_backup_chunk_root_level(root_backup, 2034 btrfs_header_level(info->chunk_root->node)); 2035 |
2035 btrfs_set_backup_extent_root(root_backup, info->extent_root->node->start); | 2036 btrfs_set_backup_extent_root(root_backup, extent_root->node->start); |
2036 btrfs_set_backup_extent_root_gen(root_backup, | 2037 btrfs_set_backup_extent_root_gen(root_backup, |
2037 btrfs_header_generation(info->extent_root->node)); | 2038 btrfs_header_generation(extent_root->node)); |
2038 btrfs_set_backup_extent_root_level(root_backup, | 2039 btrfs_set_backup_extent_root_level(root_backup, |
2039 btrfs_header_level(info->extent_root->node)); | 2040 btrfs_header_level(extent_root->node)); |
2040 2041 /* 2042 * we might commit during log recovery, which happens before we set 2043 * the fs_root. Make sure it is valid before we fill it in. 2044 */ 2045 if (info->fs_root && info->fs_root->node) { 2046 btrfs_set_backup_fs_root(root_backup, 2047 info->fs_root->node->start); --- 113 unchanged lines hidden (view full) --- 2161} 2162 2163/* helper to cleanup tree roots */ 2164static void free_root_pointers(struct btrfs_fs_info *info, bool free_chunk_root) 2165{ 2166 free_root_extent_buffers(info->tree_root); 2167 2168 free_root_extent_buffers(info->dev_root); | 2041 2042 /* 2043 * we might commit during log recovery, which happens before we set 2044 * the fs_root. Make sure it is valid before we fill it in. 2045 */ 2046 if (info->fs_root && info->fs_root->node) { 2047 btrfs_set_backup_fs_root(root_backup, 2048 info->fs_root->node->start); --- 113 unchanged lines hidden (view full) --- 2162} 2163 2164/* helper to cleanup tree roots */ 2165static void free_root_pointers(struct btrfs_fs_info *info, bool free_chunk_root) 2166{ 2167 free_root_extent_buffers(info->tree_root); 2168 2169 free_root_extent_buffers(info->dev_root); |
2169 free_root_extent_buffers(info->extent_root); | 2170 free_root_extent_buffers(info->_extent_root); |
2170 free_root_extent_buffers(info->csum_root); 2171 free_root_extent_buffers(info->quota_root); 2172 free_root_extent_buffers(info->uuid_root); 2173 free_root_extent_buffers(info->fs_root); 2174 free_root_extent_buffers(info->data_reloc_root); 2175 if (free_chunk_root) 2176 free_root_extent_buffers(info->chunk_root); 2177 free_root_extent_buffers(info->free_space_root); --- 273 unchanged lines hidden (view full) --- 2451 root = btrfs_read_tree_root(tree_root, &location); 2452 if (IS_ERR(root)) { 2453 if (!btrfs_test_opt(fs_info, IGNOREBADROOTS)) { 2454 ret = PTR_ERR(root); 2455 goto out; 2456 } 2457 } else { 2458 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); | 2171 free_root_extent_buffers(info->csum_root); 2172 free_root_extent_buffers(info->quota_root); 2173 free_root_extent_buffers(info->uuid_root); 2174 free_root_extent_buffers(info->fs_root); 2175 free_root_extent_buffers(info->data_reloc_root); 2176 if (free_chunk_root) 2177 free_root_extent_buffers(info->chunk_root); 2178 free_root_extent_buffers(info->free_space_root); --- 273 unchanged lines hidden (view full) --- 2452 root = btrfs_read_tree_root(tree_root, &location); 2453 if (IS_ERR(root)) { 2454 if (!btrfs_test_opt(fs_info, IGNOREBADROOTS)) { 2455 ret = PTR_ERR(root); 2456 goto out; 2457 } 2458 } else { 2459 set_bit(BTRFS_ROOT_TRACK_DIRTY, &root->state); |
2459 fs_info->extent_root = root; | 2460 fs_info->_extent_root = root; |
2460 } 2461 2462 location.objectid = BTRFS_DEV_TREE_OBJECTID; 2463 root = btrfs_read_tree_root(tree_root, &location); 2464 if (IS_ERR(root)) { 2465 if (!btrfs_test_opt(fs_info, IGNOREBADROOTS)) { 2466 ret = PTR_ERR(root); 2467 goto out; --- 2593 unchanged lines hidden --- | 2461 } 2462 2463 location.objectid = BTRFS_DEV_TREE_OBJECTID; 2464 root = btrfs_read_tree_root(tree_root, &location); 2465 if (IS_ERR(root)) { 2466 if (!btrfs_test_opt(fs_info, IGNOREBADROOTS)) { 2467 ret = PTR_ERR(root); 2468 goto out; --- 2593 unchanged lines hidden --- |