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 --- |