diff options
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/backref.c | 6 | ||||
-rw-r--r-- | fs/btrfs/ctree.c | 10 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 17 | ||||
-rw-r--r-- | fs/btrfs/disk-io.h | 2 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 8 | ||||
-rw-r--r-- | fs/btrfs/print-tree.c | 1 | ||||
-rw-r--r-- | fs/btrfs/relocation.c | 11 |
7 files changed, 18 insertions, 37 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 6829dc5aa657..2d3e32ebfd15 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c | |||
@@ -490,7 +490,7 @@ static int __add_missing_keys(struct btrfs_fs_info *fs_info, | |||
490 | continue; | 490 | continue; |
491 | BUG_ON(!ref->wanted_disk_byte); | 491 | BUG_ON(!ref->wanted_disk_byte); |
492 | eb = read_tree_block(fs_info->tree_root, ref->wanted_disk_byte, | 492 | eb = read_tree_block(fs_info->tree_root, ref->wanted_disk_byte, |
493 | fs_info->tree_root->nodesize, 0); | 493 | 0); |
494 | if (!eb || !extent_buffer_uptodate(eb)) { | 494 | if (!eb || !extent_buffer_uptodate(eb)) { |
495 | free_extent_buffer(eb); | 495 | free_extent_buffer(eb); |
496 | return -EIO; | 496 | return -EIO; |
@@ -1028,12 +1028,10 @@ again: | |||
1028 | if (ref->count && ref->parent) { | 1028 | if (ref->count && ref->parent) { |
1029 | if (extent_item_pos && !ref->inode_list && | 1029 | if (extent_item_pos && !ref->inode_list && |
1030 | ref->level == 0) { | 1030 | ref->level == 0) { |
1031 | u32 bsz; | ||
1032 | struct extent_buffer *eb; | 1031 | struct extent_buffer *eb; |
1033 | 1032 | ||
1034 | bsz = fs_info->extent_root->nodesize; | ||
1035 | eb = read_tree_block(fs_info->extent_root, | 1033 | eb = read_tree_block(fs_info->extent_root, |
1036 | ref->parent, bsz, 0); | 1034 | ref->parent, 0); |
1037 | if (!eb || !extent_buffer_uptodate(eb)) { | 1035 | if (!eb || !extent_buffer_uptodate(eb)) { |
1038 | free_extent_buffer(eb); | 1036 | free_extent_buffer(eb); |
1039 | ret = -EIO; | 1037 | ret = -EIO; |
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 1b7e3545a596..302c3f955706 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
@@ -1425,7 +1425,6 @@ get_old_root(struct btrfs_root *root, u64 time_seq) | |||
1425 | struct tree_mod_root *old_root = NULL; | 1425 | struct tree_mod_root *old_root = NULL; |
1426 | u64 old_generation = 0; | 1426 | u64 old_generation = 0; |
1427 | u64 logical; | 1427 | u64 logical; |
1428 | u32 blocksize; | ||
1429 | 1428 | ||
1430 | eb_root = btrfs_read_lock_root_node(root); | 1429 | eb_root = btrfs_read_lock_root_node(root); |
1431 | tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); | 1430 | tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); |
@@ -1444,8 +1443,7 @@ get_old_root(struct btrfs_root *root, u64 time_seq) | |||
1444 | if (old_root && tm && tm->op != MOD_LOG_KEY_REMOVE_WHILE_FREEING) { | 1443 | if (old_root && tm && tm->op != MOD_LOG_KEY_REMOVE_WHILE_FREEING) { |
1445 | btrfs_tree_read_unlock(eb_root); | 1444 | btrfs_tree_read_unlock(eb_root); |
1446 | free_extent_buffer(eb_root); | 1445 | free_extent_buffer(eb_root); |
1447 | blocksize = root->nodesize; | 1446 | old = read_tree_block(root, logical, 0); |
1448 | old = read_tree_block(root, logical, blocksize, 0); | ||
1449 | if (WARN_ON(!old || !extent_buffer_uptodate(old))) { | 1447 | if (WARN_ON(!old || !extent_buffer_uptodate(old))) { |
1450 | free_extent_buffer(old); | 1448 | free_extent_buffer(old); |
1451 | btrfs_warn(root->fs_info, | 1449 | btrfs_warn(root->fs_info, |
@@ -1692,8 +1690,7 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans, | |||
1692 | uptodate = 0; | 1690 | uptodate = 0; |
1693 | if (!cur || !uptodate) { | 1691 | if (!cur || !uptodate) { |
1694 | if (!cur) { | 1692 | if (!cur) { |
1695 | cur = read_tree_block(root, blocknr, | 1693 | cur = read_tree_block(root, blocknr, gen); |
1696 | blocksize, gen); | ||
1697 | if (!cur || !extent_buffer_uptodate(cur)) { | 1694 | if (!cur || !extent_buffer_uptodate(cur)) { |
1698 | free_extent_buffer(cur); | 1695 | free_extent_buffer(cur); |
1699 | return -EIO; | 1696 | return -EIO; |
@@ -1872,7 +1869,6 @@ static noinline struct extent_buffer *read_node_slot(struct btrfs_root *root, | |||
1872 | BUG_ON(level == 0); | 1869 | BUG_ON(level == 0); |
1873 | 1870 | ||
1874 | eb = read_tree_block(root, btrfs_node_blockptr(parent, slot), | 1871 | eb = read_tree_block(root, btrfs_node_blockptr(parent, slot), |
1875 | root->nodesize, | ||
1876 | btrfs_node_ptr_generation(parent, slot)); | 1872 | btrfs_node_ptr_generation(parent, slot)); |
1877 | if (eb && !extent_buffer_uptodate(eb)) { | 1873 | if (eb && !extent_buffer_uptodate(eb)) { |
1878 | free_extent_buffer(eb); | 1874 | free_extent_buffer(eb); |
@@ -2507,7 +2503,7 @@ read_block_for_search(struct btrfs_trans_handle *trans, | |||
2507 | btrfs_release_path(p); | 2503 | btrfs_release_path(p); |
2508 | 2504 | ||
2509 | ret = -EAGAIN; | 2505 | ret = -EAGAIN; |
2510 | tmp = read_tree_block(root, blocknr, blocksize, 0); | 2506 | tmp = read_tree_block(root, blocknr, 0); |
2511 | if (tmp) { | 2507 | if (tmp) { |
2512 | /* | 2508 | /* |
2513 | * If the read above didn't mark this buffer up to date, | 2509 | * If the read above didn't mark this buffer up to date, |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 332f63518156..03c0973568ef 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -1138,12 +1138,12 @@ int btrfs_wait_tree_block_writeback(struct extent_buffer *buf) | |||
1138 | } | 1138 | } |
1139 | 1139 | ||
1140 | struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr, | 1140 | struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr, |
1141 | u32 blocksize, u64 parent_transid) | 1141 | u64 parent_transid) |
1142 | { | 1142 | { |
1143 | struct extent_buffer *buf = NULL; | 1143 | struct extent_buffer *buf = NULL; |
1144 | int ret; | 1144 | int ret; |
1145 | 1145 | ||
1146 | buf = btrfs_find_create_tree_block(root, bytenr, blocksize); | 1146 | buf = btrfs_find_create_tree_block(root, bytenr, root->nodesize); |
1147 | if (!buf) | 1147 | if (!buf) |
1148 | return NULL; | 1148 | return NULL; |
1149 | 1149 | ||
@@ -1484,7 +1484,6 @@ static struct btrfs_root *btrfs_read_tree_root(struct btrfs_root *tree_root, | |||
1484 | struct btrfs_fs_info *fs_info = tree_root->fs_info; | 1484 | struct btrfs_fs_info *fs_info = tree_root->fs_info; |
1485 | struct btrfs_path *path; | 1485 | struct btrfs_path *path; |
1486 | u64 generation; | 1486 | u64 generation; |
1487 | u32 blocksize; | ||
1488 | int ret; | 1487 | int ret; |
1489 | 1488 | ||
1490 | path = btrfs_alloc_path(); | 1489 | path = btrfs_alloc_path(); |
@@ -1509,9 +1508,8 @@ static struct btrfs_root *btrfs_read_tree_root(struct btrfs_root *tree_root, | |||
1509 | } | 1508 | } |
1510 | 1509 | ||
1511 | generation = btrfs_root_generation(&root->root_item); | 1510 | generation = btrfs_root_generation(&root->root_item); |
1512 | blocksize = root->nodesize; | ||
1513 | root->node = read_tree_block(root, btrfs_root_bytenr(&root->root_item), | 1511 | root->node = read_tree_block(root, btrfs_root_bytenr(&root->root_item), |
1514 | blocksize, generation); | 1512 | generation); |
1515 | if (!root->node) { | 1513 | if (!root->node) { |
1516 | ret = -ENOMEM; | 1514 | ret = -ENOMEM; |
1517 | goto find_fail; | 1515 | goto find_fail; |
@@ -2139,7 +2137,6 @@ int open_ctree(struct super_block *sb, | |||
2139 | { | 2137 | { |
2140 | u32 sectorsize; | 2138 | u32 sectorsize; |
2141 | u32 nodesize; | 2139 | u32 nodesize; |
2142 | u32 blocksize; | ||
2143 | u32 stripesize; | 2140 | u32 stripesize; |
2144 | u64 generation; | 2141 | u64 generation; |
2145 | u64 features; | 2142 | u64 features; |
@@ -2643,7 +2640,6 @@ int open_ctree(struct super_block *sb, | |||
2643 | goto fail_sb_buffer; | 2640 | goto fail_sb_buffer; |
2644 | } | 2641 | } |
2645 | 2642 | ||
2646 | blocksize = tree_root->nodesize; | ||
2647 | generation = btrfs_super_chunk_root_generation(disk_super); | 2643 | generation = btrfs_super_chunk_root_generation(disk_super); |
2648 | 2644 | ||
2649 | __setup_root(nodesize, sectorsize, stripesize, chunk_root, | 2645 | __setup_root(nodesize, sectorsize, stripesize, chunk_root, |
@@ -2651,7 +2647,7 @@ int open_ctree(struct super_block *sb, | |||
2651 | 2647 | ||
2652 | chunk_root->node = read_tree_block(chunk_root, | 2648 | chunk_root->node = read_tree_block(chunk_root, |
2653 | btrfs_super_chunk_root(disk_super), | 2649 | btrfs_super_chunk_root(disk_super), |
2654 | blocksize, generation); | 2650 | generation); |
2655 | if (!chunk_root->node || | 2651 | if (!chunk_root->node || |
2656 | !test_bit(EXTENT_BUFFER_UPTODATE, &chunk_root->node->bflags)) { | 2652 | !test_bit(EXTENT_BUFFER_UPTODATE, &chunk_root->node->bflags)) { |
2657 | printk(KERN_WARNING "BTRFS: failed to read chunk root on %s\n", | 2653 | printk(KERN_WARNING "BTRFS: failed to read chunk root on %s\n", |
@@ -2684,12 +2680,11 @@ int open_ctree(struct super_block *sb, | |||
2684 | } | 2680 | } |
2685 | 2681 | ||
2686 | retry_root_backup: | 2682 | retry_root_backup: |
2687 | blocksize = tree_root->nodesize; | ||
2688 | generation = btrfs_super_generation(disk_super); | 2683 | generation = btrfs_super_generation(disk_super); |
2689 | 2684 | ||
2690 | tree_root->node = read_tree_block(tree_root, | 2685 | tree_root->node = read_tree_block(tree_root, |
2691 | btrfs_super_root(disk_super), | 2686 | btrfs_super_root(disk_super), |
2692 | blocksize, generation); | 2687 | generation); |
2693 | if (!tree_root->node || | 2688 | if (!tree_root->node || |
2694 | !test_bit(EXTENT_BUFFER_UPTODATE, &tree_root->node->bflags)) { | 2689 | !test_bit(EXTENT_BUFFER_UPTODATE, &tree_root->node->bflags)) { |
2695 | printk(KERN_WARNING "BTRFS: failed to read tree root on %s\n", | 2690 | printk(KERN_WARNING "BTRFS: failed to read tree root on %s\n", |
@@ -2858,7 +2853,6 @@ retry_root_backup: | |||
2858 | err = -EIO; | 2853 | err = -EIO; |
2859 | goto fail_qgroup; | 2854 | goto fail_qgroup; |
2860 | } | 2855 | } |
2861 | blocksize = tree_root->nodesize; | ||
2862 | 2856 | ||
2863 | log_tree_root = btrfs_alloc_root(fs_info); | 2857 | log_tree_root = btrfs_alloc_root(fs_info); |
2864 | if (!log_tree_root) { | 2858 | if (!log_tree_root) { |
@@ -2870,7 +2864,6 @@ retry_root_backup: | |||
2870 | log_tree_root, fs_info, BTRFS_TREE_LOG_OBJECTID); | 2864 | log_tree_root, fs_info, BTRFS_TREE_LOG_OBJECTID); |
2871 | 2865 | ||
2872 | log_tree_root->node = read_tree_block(tree_root, bytenr, | 2866 | log_tree_root->node = read_tree_block(tree_root, bytenr, |
2873 | blocksize, | ||
2874 | generation + 1); | 2867 | generation + 1); |
2875 | if (!log_tree_root->node || | 2868 | if (!log_tree_root->node || |
2876 | !extent_buffer_uptodate(log_tree_root->node)) { | 2869 | !extent_buffer_uptodate(log_tree_root->node)) { |
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h index 0d9793f6b594..03f396144fe1 100644 --- a/fs/btrfs/disk-io.h +++ b/fs/btrfs/disk-io.h | |||
@@ -45,7 +45,7 @@ struct btrfs_device; | |||
45 | struct btrfs_fs_devices; | 45 | struct btrfs_fs_devices; |
46 | 46 | ||
47 | struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr, | 47 | struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr, |
48 | u32 blocksize, u64 parent_transid); | 48 | u64 parent_transid); |
49 | void readahead_tree_block(struct btrfs_root *root, u64 bytenr, u32 blocksize); | 49 | void readahead_tree_block(struct btrfs_root *root, u64 bytenr, u32 blocksize); |
50 | int reada_tree_block_flagged(struct btrfs_root *root, u64 bytenr, u32 blocksize, | 50 | int reada_tree_block_flagged(struct btrfs_root *root, u64 bytenr, u32 blocksize, |
51 | int mirror_num, struct extent_buffer **eb); | 51 | int mirror_num, struct extent_buffer **eb); |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index e0468a9789a5..178f6dbf2d7c 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -7645,7 +7645,6 @@ walk_down: | |||
7645 | level = root_level; | 7645 | level = root_level; |
7646 | while (level >= 0) { | 7646 | while (level >= 0) { |
7647 | if (path->nodes[level] == NULL) { | 7647 | if (path->nodes[level] == NULL) { |
7648 | int child_bsize = root->nodesize; | ||
7649 | int parent_slot; | 7648 | int parent_slot; |
7650 | u64 child_gen; | 7649 | u64 child_gen; |
7651 | u64 child_bytenr; | 7650 | u64 child_bytenr; |
@@ -7657,8 +7656,7 @@ walk_down: | |||
7657 | child_bytenr = btrfs_node_blockptr(eb, parent_slot); | 7656 | child_bytenr = btrfs_node_blockptr(eb, parent_slot); |
7658 | child_gen = btrfs_node_ptr_generation(eb, parent_slot); | 7657 | child_gen = btrfs_node_ptr_generation(eb, parent_slot); |
7659 | 7658 | ||
7660 | eb = read_tree_block(root, child_bytenr, child_bsize, | 7659 | eb = read_tree_block(root, child_bytenr, child_gen); |
7661 | child_gen); | ||
7662 | if (!eb || !extent_buffer_uptodate(eb)) { | 7660 | if (!eb || !extent_buffer_uptodate(eb)) { |
7663 | ret = -EIO; | 7661 | ret = -EIO; |
7664 | goto out; | 7662 | goto out; |
@@ -7674,7 +7672,7 @@ walk_down: | |||
7674 | ret = btrfs_qgroup_record_ref(trans, root->fs_info, | 7672 | ret = btrfs_qgroup_record_ref(trans, root->fs_info, |
7675 | root->objectid, | 7673 | root->objectid, |
7676 | child_bytenr, | 7674 | child_bytenr, |
7677 | child_bsize, | 7675 | root->nodesize, |
7678 | BTRFS_QGROUP_OPER_SUB_SUBTREE, | 7676 | BTRFS_QGROUP_OPER_SUB_SUBTREE, |
7679 | 0); | 7677 | 0); |
7680 | if (ret) | 7678 | if (ret) |
@@ -7889,7 +7887,7 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans, | |||
7889 | if (!next) { | 7887 | if (!next) { |
7890 | if (reada && level == 1) | 7888 | if (reada && level == 1) |
7891 | reada_walk_down(trans, root, wc, path); | 7889 | reada_walk_down(trans, root, wc, path); |
7892 | next = read_tree_block(root, bytenr, blocksize, generation); | 7890 | next = read_tree_block(root, bytenr, generation); |
7893 | if (!next || !extent_buffer_uptodate(next)) { | 7891 | if (!next || !extent_buffer_uptodate(next)) { |
7894 | free_extent_buffer(next); | 7892 | free_extent_buffer(next); |
7895 | return -EIO; | 7893 | return -EIO; |
diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c index eb309855d5c8..647ab12fdf5d 100644 --- a/fs/btrfs/print-tree.c +++ b/fs/btrfs/print-tree.c | |||
@@ -336,7 +336,6 @@ void btrfs_print_tree(struct btrfs_root *root, struct extent_buffer *c) | |||
336 | for (i = 0; i < nr; i++) { | 336 | for (i = 0; i < nr; i++) { |
337 | struct extent_buffer *next = read_tree_block(root, | 337 | struct extent_buffer *next = read_tree_block(root, |
338 | btrfs_node_blockptr(c, i), | 338 | btrfs_node_blockptr(c, i), |
339 | root->nodesize, | ||
340 | btrfs_node_ptr_generation(c, i)); | 339 | btrfs_node_ptr_generation(c, i)); |
341 | if (btrfs_is_leaf(next) && | 340 | if (btrfs_is_leaf(next) && |
342 | level != 1) | 341 | level != 1) |
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index d7506325b024..95bc40ae358d 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -1813,8 +1813,7 @@ again: | |||
1813 | break; | 1813 | break; |
1814 | } | 1814 | } |
1815 | 1815 | ||
1816 | eb = read_tree_block(dest, old_bytenr, blocksize, | 1816 | eb = read_tree_block(dest, old_bytenr, old_ptr_gen); |
1817 | old_ptr_gen); | ||
1818 | if (!eb || !extent_buffer_uptodate(eb)) { | 1817 | if (!eb || !extent_buffer_uptodate(eb)) { |
1819 | ret = (!eb) ? -ENOMEM : -EIO; | 1818 | ret = (!eb) ? -ENOMEM : -EIO; |
1820 | free_extent_buffer(eb); | 1819 | free_extent_buffer(eb); |
@@ -1944,7 +1943,6 @@ int walk_down_reloc_tree(struct btrfs_root *root, struct btrfs_path *path, | |||
1944 | u64 bytenr; | 1943 | u64 bytenr; |
1945 | u64 ptr_gen = 0; | 1944 | u64 ptr_gen = 0; |
1946 | u64 last_snapshot; | 1945 | u64 last_snapshot; |
1947 | u32 blocksize; | ||
1948 | u32 nritems; | 1946 | u32 nritems; |
1949 | 1947 | ||
1950 | last_snapshot = btrfs_root_last_snapshot(&root->root_item); | 1948 | last_snapshot = btrfs_root_last_snapshot(&root->root_item); |
@@ -1970,8 +1968,7 @@ int walk_down_reloc_tree(struct btrfs_root *root, struct btrfs_path *path, | |||
1970 | } | 1968 | } |
1971 | 1969 | ||
1972 | bytenr = btrfs_node_blockptr(eb, path->slots[i]); | 1970 | bytenr = btrfs_node_blockptr(eb, path->slots[i]); |
1973 | blocksize = root->nodesize; | 1971 | eb = read_tree_block(root, bytenr, ptr_gen); |
1974 | eb = read_tree_block(root, bytenr, blocksize, ptr_gen); | ||
1975 | if (!eb || !extent_buffer_uptodate(eb)) { | 1972 | if (!eb || !extent_buffer_uptodate(eb)) { |
1976 | free_extent_buffer(eb); | 1973 | free_extent_buffer(eb); |
1977 | return -EIO; | 1974 | return -EIO; |
@@ -2680,7 +2677,7 @@ static int do_relocation(struct btrfs_trans_handle *trans, | |||
2680 | 2677 | ||
2681 | blocksize = root->nodesize; | 2678 | blocksize = root->nodesize; |
2682 | generation = btrfs_node_ptr_generation(upper->eb, slot); | 2679 | generation = btrfs_node_ptr_generation(upper->eb, slot); |
2683 | eb = read_tree_block(root, bytenr, blocksize, generation); | 2680 | eb = read_tree_block(root, bytenr, generation); |
2684 | if (!eb || !extent_buffer_uptodate(eb)) { | 2681 | if (!eb || !extent_buffer_uptodate(eb)) { |
2685 | free_extent_buffer(eb); | 2682 | free_extent_buffer(eb); |
2686 | err = -EIO; | 2683 | err = -EIO; |
@@ -2842,7 +2839,7 @@ static int get_tree_block_key(struct reloc_control *rc, | |||
2842 | 2839 | ||
2843 | BUG_ON(block->key_ready); | 2840 | BUG_ON(block->key_ready); |
2844 | eb = read_tree_block(rc->extent_root, block->bytenr, | 2841 | eb = read_tree_block(rc->extent_root, block->bytenr, |
2845 | block->key.objectid, block->key.offset); | 2842 | block->key.offset); |
2846 | if (!eb || !extent_buffer_uptodate(eb)) { | 2843 | if (!eb || !extent_buffer_uptodate(eb)) { |
2847 | free_extent_buffer(eb); | 2844 | free_extent_buffer(eb); |
2848 | return -EIO; | 2845 | return -EIO; |