disk-io.c (8260edba67a2e6bd5e709d32188e23aa22cb4a38) disk-io.c (bd647ce385ec110fe7796267b6555873e48e44eb)
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>

--- 1188 unchanged lines hidden (view full) ---

1197 root->defrag_trans_start = fs_info->generation;
1198 else
1199 root->defrag_trans_start = 0;
1200 root->root_key.objectid = objectid;
1201 root->anon_dev = 0;
1202
1203 spin_lock_init(&root->root_item_lock);
1204 btrfs_qgroup_init_swapped_blocks(&root->swapped_blocks);
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>

--- 1188 unchanged lines hidden (view full) ---

1197 root->defrag_trans_start = fs_info->generation;
1198 else
1199 root->defrag_trans_start = 0;
1200 root->root_key.objectid = objectid;
1201 root->anon_dev = 0;
1202
1203 spin_lock_init(&root->root_item_lock);
1204 btrfs_qgroup_init_swapped_blocks(&root->swapped_blocks);
1205#ifdef CONFIG_BTRFS_DEBUG
1206 INIT_LIST_HEAD(&root->leak_list);
1207 spin_lock(&fs_info->fs_roots_radix_lock);
1208 list_add_tail(&root->leak_list, &fs_info->allocated_roots);
1209 spin_unlock(&fs_info->fs_roots_radix_lock);
1210#endif
1205}
1206
1207static struct btrfs_root *btrfs_alloc_root(struct btrfs_fs_info *fs_info,
1208 u64 objectid, gfp_t flags)
1209{
1210 struct btrfs_root *root = kzalloc(sizeof(*root), flags);
1211 if (root)
1212 __setup_root(root, fs_info, objectid);

--- 313 unchanged lines hidden (view full) ---

1526 set_bit(BTRFS_ROOT_IN_RADIX, &root->state);
1527 }
1528 spin_unlock(&fs_info->fs_roots_radix_lock);
1529 radix_tree_preload_end();
1530
1531 return ret;
1532}
1533
1211}
1212
1213static struct btrfs_root *btrfs_alloc_root(struct btrfs_fs_info *fs_info,
1214 u64 objectid, gfp_t flags)
1215{
1216 struct btrfs_root *root = kzalloc(sizeof(*root), flags);
1217 if (root)
1218 __setup_root(root, fs_info, objectid);

--- 313 unchanged lines hidden (view full) ---

1532 set_bit(BTRFS_ROOT_IN_RADIX, &root->state);
1533 }
1534 spin_unlock(&fs_info->fs_roots_radix_lock);
1535 radix_tree_preload_end();
1536
1537 return ret;
1538}
1539
1540void btrfs_check_leaked_roots(struct btrfs_fs_info *fs_info)
1541{
1542#ifdef CONFIG_BTRFS_DEBUG
1543 struct btrfs_root *root;
1544
1545 while (!list_empty(&fs_info->allocated_roots)) {
1546 root = list_first_entry(&fs_info->allocated_roots,
1547 struct btrfs_root, leak_list);
1548 btrfs_err(fs_info, "leaked root %llu-%llu refcount %d",
1549 root->root_key.objectid, root->root_key.offset,
1550 refcount_read(&root->refs));
1551 while (refcount_read(&root->refs) > 1)
1552 btrfs_put_fs_root(root);
1553 btrfs_put_fs_root(root);
1554 }
1555#endif
1556}
1557
1534void btrfs_free_fs_info(struct btrfs_fs_info *fs_info)
1535{
1536 percpu_counter_destroy(&fs_info->dirty_metadata_bytes);
1537 percpu_counter_destroy(&fs_info->delalloc_bytes);
1538 percpu_counter_destroy(&fs_info->dio_bytes);
1539 percpu_counter_destroy(&fs_info->dev_replace.bio_counter);
1540 btrfs_free_csum_hash(fs_info);
1541 btrfs_free_stripe_hash_table(fs_info);

--- 4 unchanged lines hidden (view full) ---

1546 btrfs_put_fs_root(fs_info->tree_root);
1547 btrfs_put_fs_root(fs_info->chunk_root);
1548 btrfs_put_fs_root(fs_info->dev_root);
1549 btrfs_put_fs_root(fs_info->csum_root);
1550 btrfs_put_fs_root(fs_info->quota_root);
1551 btrfs_put_fs_root(fs_info->uuid_root);
1552 btrfs_put_fs_root(fs_info->free_space_root);
1553 btrfs_put_fs_root(fs_info->fs_root);
1558void btrfs_free_fs_info(struct btrfs_fs_info *fs_info)
1559{
1560 percpu_counter_destroy(&fs_info->dirty_metadata_bytes);
1561 percpu_counter_destroy(&fs_info->delalloc_bytes);
1562 percpu_counter_destroy(&fs_info->dio_bytes);
1563 percpu_counter_destroy(&fs_info->dev_replace.bio_counter);
1564 btrfs_free_csum_hash(fs_info);
1565 btrfs_free_stripe_hash_table(fs_info);

--- 4 unchanged lines hidden (view full) ---

1570 btrfs_put_fs_root(fs_info->tree_root);
1571 btrfs_put_fs_root(fs_info->chunk_root);
1572 btrfs_put_fs_root(fs_info->dev_root);
1573 btrfs_put_fs_root(fs_info->csum_root);
1574 btrfs_put_fs_root(fs_info->quota_root);
1575 btrfs_put_fs_root(fs_info->uuid_root);
1576 btrfs_put_fs_root(fs_info->free_space_root);
1577 btrfs_put_fs_root(fs_info->fs_root);
1578 btrfs_check_leaked_roots(fs_info);
1554 kfree(fs_info->super_copy);
1555 kfree(fs_info->super_for_commit);
1556 kvfree(fs_info);
1557}
1558
1559
1560struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info,
1561 struct btrfs_key *location,

--- 1110 unchanged lines hidden (view full) ---

2672 mutex_init(&fs_info->reloc_mutex);
2673 mutex_init(&fs_info->delalloc_root_mutex);
2674 seqlock_init(&fs_info->profiles_lock);
2675
2676 INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
2677 INIT_LIST_HEAD(&fs_info->space_info);
2678 INIT_LIST_HEAD(&fs_info->tree_mod_seq_list);
2679 INIT_LIST_HEAD(&fs_info->unused_bgs);
1579 kfree(fs_info->super_copy);
1580 kfree(fs_info->super_for_commit);
1581 kvfree(fs_info);
1582}
1583
1584
1585struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info,
1586 struct btrfs_key *location,

--- 1110 unchanged lines hidden (view full) ---

2697 mutex_init(&fs_info->reloc_mutex);
2698 mutex_init(&fs_info->delalloc_root_mutex);
2699 seqlock_init(&fs_info->profiles_lock);
2700
2701 INIT_LIST_HEAD(&fs_info->dirty_cowonly_roots);
2702 INIT_LIST_HEAD(&fs_info->space_info);
2703 INIT_LIST_HEAD(&fs_info->tree_mod_seq_list);
2704 INIT_LIST_HEAD(&fs_info->unused_bgs);
2705#ifdef CONFIG_BTRFS_DEBUG
2706 INIT_LIST_HEAD(&fs_info->allocated_roots);
2707#endif
2680 extent_map_tree_init(&fs_info->mapping_tree);
2681 btrfs_init_block_rsv(&fs_info->global_block_rsv,
2682 BTRFS_BLOCK_RSV_GLOBAL);
2683 btrfs_init_block_rsv(&fs_info->trans_block_rsv, BTRFS_BLOCK_RSV_TRANS);
2684 btrfs_init_block_rsv(&fs_info->chunk_block_rsv, BTRFS_BLOCK_RSV_CHUNK);
2685 btrfs_init_block_rsv(&fs_info->empty_block_rsv, BTRFS_BLOCK_RSV_EMPTY);
2686 btrfs_init_block_rsv(&fs_info->delayed_block_rsv,
2687 BTRFS_BLOCK_RSV_DELOPS);

--- 1899 unchanged lines hidden ---
2708 extent_map_tree_init(&fs_info->mapping_tree);
2709 btrfs_init_block_rsv(&fs_info->global_block_rsv,
2710 BTRFS_BLOCK_RSV_GLOBAL);
2711 btrfs_init_block_rsv(&fs_info->trans_block_rsv, BTRFS_BLOCK_RSV_TRANS);
2712 btrfs_init_block_rsv(&fs_info->chunk_block_rsv, BTRFS_BLOCK_RSV_CHUNK);
2713 btrfs_init_block_rsv(&fs_info->empty_block_rsv, BTRFS_BLOCK_RSV_EMPTY);
2714 btrfs_init_block_rsv(&fs_info->delayed_block_rsv,
2715 BTRFS_BLOCK_RSV_DELOPS);

--- 1899 unchanged lines hidden ---