extent-tree.c (8e1d02909185bddc76e98e680d7fea38be0e87da) | extent-tree.c (29cbcf401793f4e2c871c846edc2191731df2c41) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2007 Oracle. All rights reserved. 4 */ 5 6#include <linux/sched.h> 7#include <linux/sched/signal.h> 8#include <linux/pagemap.h> --- 73 unchanged lines hidden (view full) --- 82 83 clear_extent_bits(&fs_info->excluded_extents, start, end, 84 EXTENT_UPTODATE); 85} 86 87/* simple helper to search for an existing data extent at a given offset */ 88int btrfs_lookup_data_extent(struct btrfs_fs_info *fs_info, u64 start, u64 len) 89{ | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2007 Oracle. All rights reserved. 4 */ 5 6#include <linux/sched.h> 7#include <linux/sched/signal.h> 8#include <linux/pagemap.h> --- 73 unchanged lines hidden (view full) --- 82 83 clear_extent_bits(&fs_info->excluded_extents, start, end, 84 EXTENT_UPTODATE); 85} 86 87/* simple helper to search for an existing data extent at a given offset */ 88int btrfs_lookup_data_extent(struct btrfs_fs_info *fs_info, u64 start, u64 len) 89{ |
90 struct btrfs_root *root = btrfs_extent_root(fs_info, start); |
|
90 int ret; 91 struct btrfs_key key; 92 struct btrfs_path *path; 93 94 path = btrfs_alloc_path(); 95 if (!path) 96 return -ENOMEM; 97 98 key.objectid = start; 99 key.offset = len; 100 key.type = BTRFS_EXTENT_ITEM_KEY; | 91 int ret; 92 struct btrfs_key key; 93 struct btrfs_path *path; 94 95 path = btrfs_alloc_path(); 96 if (!path) 97 return -ENOMEM; 98 99 key.objectid = start; 100 key.offset = len; 101 key.type = BTRFS_EXTENT_ITEM_KEY; |
101 ret = btrfs_search_slot(NULL, fs_info->extent_root, &key, path, 0, 0); | 102 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); |
102 btrfs_free_path(path); 103 return ret; 104} 105 106/* 107 * helper function to lookup reference count and flags of a tree block. 108 * 109 * the head node for delayed ref is used to store the sum of all the 110 * reference count modifications queued up in the rbtree. the head 111 * node may also store the extent flags to set. This way you can check 112 * to see what the reference count and extent flags would be if all of 113 * the delayed refs are not processed. 114 */ 115int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans, 116 struct btrfs_fs_info *fs_info, u64 bytenr, 117 u64 offset, int metadata, u64 *refs, u64 *flags) 118{ | 103 btrfs_free_path(path); 104 return ret; 105} 106 107/* 108 * helper function to lookup reference count and flags of a tree block. 109 * 110 * the head node for delayed ref is used to store the sum of all the 111 * reference count modifications queued up in the rbtree. the head 112 * node may also store the extent flags to set. This way you can check 113 * to see what the reference count and extent flags would be if all of 114 * the delayed refs are not processed. 115 */ 116int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans, 117 struct btrfs_fs_info *fs_info, u64 bytenr, 118 u64 offset, int metadata, u64 *refs, u64 *flags) 119{ |
120 struct btrfs_root *extent_root; |
|
119 struct btrfs_delayed_ref_head *head; 120 struct btrfs_delayed_ref_root *delayed_refs; 121 struct btrfs_path *path; 122 struct btrfs_extent_item *ei; 123 struct extent_buffer *leaf; 124 struct btrfs_key key; 125 u32 item_size; 126 u64 num_refs; --- 21 unchanged lines hidden (view full) --- 148search_again: 149 key.objectid = bytenr; 150 key.offset = offset; 151 if (metadata) 152 key.type = BTRFS_METADATA_ITEM_KEY; 153 else 154 key.type = BTRFS_EXTENT_ITEM_KEY; 155 | 121 struct btrfs_delayed_ref_head *head; 122 struct btrfs_delayed_ref_root *delayed_refs; 123 struct btrfs_path *path; 124 struct btrfs_extent_item *ei; 125 struct extent_buffer *leaf; 126 struct btrfs_key key; 127 u32 item_size; 128 u64 num_refs; --- 21 unchanged lines hidden (view full) --- 150search_again: 151 key.objectid = bytenr; 152 key.offset = offset; 153 if (metadata) 154 key.type = BTRFS_METADATA_ITEM_KEY; 155 else 156 key.type = BTRFS_EXTENT_ITEM_KEY; 157 |
156 ret = btrfs_search_slot(NULL, fs_info->extent_root, &key, path, 0, 0); | 158 extent_root = btrfs_extent_root(fs_info, bytenr); 159 ret = btrfs_search_slot(NULL, extent_root, &key, path, 0, 0); |
157 if (ret < 0) 158 goto out_free; 159 160 if (ret > 0 && metadata && key.type == BTRFS_METADATA_ITEM_KEY) { 161 if (path->slots[0]) { 162 path->slots[0]--; 163 btrfs_item_key_to_cpu(path->nodes[0], &key, 164 path->slots[0]); --- 273 unchanged lines hidden (view full) --- 438} 439 440static noinline int lookup_extent_data_ref(struct btrfs_trans_handle *trans, 441 struct btrfs_path *path, 442 u64 bytenr, u64 parent, 443 u64 root_objectid, 444 u64 owner, u64 offset) 445{ | 160 if (ret < 0) 161 goto out_free; 162 163 if (ret > 0 && metadata && key.type == BTRFS_METADATA_ITEM_KEY) { 164 if (path->slots[0]) { 165 path->slots[0]--; 166 btrfs_item_key_to_cpu(path->nodes[0], &key, 167 path->slots[0]); --- 273 unchanged lines hidden (view full) --- 441} 442 443static noinline int lookup_extent_data_ref(struct btrfs_trans_handle *trans, 444 struct btrfs_path *path, 445 u64 bytenr, u64 parent, 446 u64 root_objectid, 447 u64 owner, u64 offset) 448{ |
446 struct btrfs_root *root = trans->fs_info->extent_root; | 449 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr); |
447 struct btrfs_key key; 448 struct btrfs_extent_data_ref *ref; 449 struct extent_buffer *leaf; 450 u32 nritems; 451 int ret; 452 int recow; 453 int err = -ENOENT; 454 --- 59 unchanged lines hidden (view full) --- 514} 515 516static noinline int insert_extent_data_ref(struct btrfs_trans_handle *trans, 517 struct btrfs_path *path, 518 u64 bytenr, u64 parent, 519 u64 root_objectid, u64 owner, 520 u64 offset, int refs_to_add) 521{ | 450 struct btrfs_key key; 451 struct btrfs_extent_data_ref *ref; 452 struct extent_buffer *leaf; 453 u32 nritems; 454 int ret; 455 int recow; 456 int err = -ENOENT; 457 --- 59 unchanged lines hidden (view full) --- 517} 518 519static noinline int insert_extent_data_ref(struct btrfs_trans_handle *trans, 520 struct btrfs_path *path, 521 u64 bytenr, u64 parent, 522 u64 root_objectid, u64 owner, 523 u64 offset, int refs_to_add) 524{ |
522 struct btrfs_root *root = trans->fs_info->extent_root; | 525 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr); |
523 struct btrfs_key key; 524 struct extent_buffer *leaf; 525 u32 size; 526 u32 num_refs; 527 int ret; 528 529 key.objectid = bytenr; 530 if (parent) { --- 150 unchanged lines hidden (view full) --- 681 return num_refs; 682} 683 684static noinline int lookup_tree_block_ref(struct btrfs_trans_handle *trans, 685 struct btrfs_path *path, 686 u64 bytenr, u64 parent, 687 u64 root_objectid) 688{ | 526 struct btrfs_key key; 527 struct extent_buffer *leaf; 528 u32 size; 529 u32 num_refs; 530 int ret; 531 532 key.objectid = bytenr; 533 if (parent) { --- 150 unchanged lines hidden (view full) --- 684 return num_refs; 685} 686 687static noinline int lookup_tree_block_ref(struct btrfs_trans_handle *trans, 688 struct btrfs_path *path, 689 u64 bytenr, u64 parent, 690 u64 root_objectid) 691{ |
689 struct btrfs_root *root = trans->fs_info->extent_root; | 692 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr); |
690 struct btrfs_key key; 691 int ret; 692 693 key.objectid = bytenr; 694 if (parent) { 695 key.type = BTRFS_SHARED_BLOCK_REF_KEY; 696 key.offset = parent; 697 } else { --- 7 unchanged lines hidden (view full) --- 705 return ret; 706} 707 708static noinline int insert_tree_block_ref(struct btrfs_trans_handle *trans, 709 struct btrfs_path *path, 710 u64 bytenr, u64 parent, 711 u64 root_objectid) 712{ | 693 struct btrfs_key key; 694 int ret; 695 696 key.objectid = bytenr; 697 if (parent) { 698 key.type = BTRFS_SHARED_BLOCK_REF_KEY; 699 key.offset = parent; 700 } else { --- 7 unchanged lines hidden (view full) --- 708 return ret; 709} 710 711static noinline int insert_tree_block_ref(struct btrfs_trans_handle *trans, 712 struct btrfs_path *path, 713 u64 bytenr, u64 parent, 714 u64 root_objectid) 715{ |
716 struct btrfs_root *root = btrfs_extent_root(trans->fs_info, bytenr); |
|
713 struct btrfs_key key; 714 int ret; 715 716 key.objectid = bytenr; 717 if (parent) { 718 key.type = BTRFS_SHARED_BLOCK_REF_KEY; 719 key.offset = parent; 720 } else { 721 key.type = BTRFS_TREE_BLOCK_REF_KEY; 722 key.offset = root_objectid; 723 } 724 | 717 struct btrfs_key key; 718 int ret; 719 720 key.objectid = bytenr; 721 if (parent) { 722 key.type = BTRFS_SHARED_BLOCK_REF_KEY; 723 key.offset = parent; 724 } else { 725 key.type = BTRFS_TREE_BLOCK_REF_KEY; 726 key.offset = root_objectid; 727 } 728 |
725 ret = btrfs_insert_empty_item(trans, trans->fs_info->extent_root, 726 path, &key, 0); | 729 ret = btrfs_insert_empty_item(trans, root, path, &key, 0); |
727 btrfs_release_path(path); 728 return ret; 729} 730 731static inline int extent_ref_type(u64 parent, u64 owner) 732{ 733 int type; 734 if (owner < BTRFS_FIRST_FREE_OBJECTID) { --- 48 unchanged lines hidden (view full) --- 783int lookup_inline_extent_backref(struct btrfs_trans_handle *trans, 784 struct btrfs_path *path, 785 struct btrfs_extent_inline_ref **ref_ret, 786 u64 bytenr, u64 num_bytes, 787 u64 parent, u64 root_objectid, 788 u64 owner, u64 offset, int insert) 789{ 790 struct btrfs_fs_info *fs_info = trans->fs_info; | 730 btrfs_release_path(path); 731 return ret; 732} 733 734static inline int extent_ref_type(u64 parent, u64 owner) 735{ 736 int type; 737 if (owner < BTRFS_FIRST_FREE_OBJECTID) { --- 48 unchanged lines hidden (view full) --- 786int lookup_inline_extent_backref(struct btrfs_trans_handle *trans, 787 struct btrfs_path *path, 788 struct btrfs_extent_inline_ref **ref_ret, 789 u64 bytenr, u64 num_bytes, 790 u64 parent, u64 root_objectid, 791 u64 owner, u64 offset, int insert) 792{ 793 struct btrfs_fs_info *fs_info = trans->fs_info; |
791 struct btrfs_root *root = fs_info->extent_root; | 794 struct btrfs_root *root = btrfs_extent_root(fs_info, bytenr); |
792 struct btrfs_key key; 793 struct extent_buffer *leaf; 794 struct btrfs_extent_item *ei; 795 struct btrfs_extent_inline_ref *iref; 796 u64 flags; 797 u64 item_size; 798 unsigned long ptr; 799 unsigned long end; --- 769 unchanged lines hidden (view full) --- 1569 } 1570} 1571 1572static int run_delayed_extent_op(struct btrfs_trans_handle *trans, 1573 struct btrfs_delayed_ref_head *head, 1574 struct btrfs_delayed_extent_op *extent_op) 1575{ 1576 struct btrfs_fs_info *fs_info = trans->fs_info; | 795 struct btrfs_key key; 796 struct extent_buffer *leaf; 797 struct btrfs_extent_item *ei; 798 struct btrfs_extent_inline_ref *iref; 799 u64 flags; 800 u64 item_size; 801 unsigned long ptr; 802 unsigned long end; --- 769 unchanged lines hidden (view full) --- 1572 } 1573} 1574 1575static int run_delayed_extent_op(struct btrfs_trans_handle *trans, 1576 struct btrfs_delayed_ref_head *head, 1577 struct btrfs_delayed_extent_op *extent_op) 1578{ 1579 struct btrfs_fs_info *fs_info = trans->fs_info; |
1580 struct btrfs_root *root; |
|
1577 struct btrfs_key key; 1578 struct btrfs_path *path; 1579 struct btrfs_extent_item *ei; 1580 struct extent_buffer *leaf; 1581 u32 item_size; 1582 int ret; 1583 int err = 0; 1584 int metadata = !extent_op->is_data; --- 13 unchanged lines hidden (view full) --- 1598 if (metadata) { 1599 key.type = BTRFS_METADATA_ITEM_KEY; 1600 key.offset = extent_op->level; 1601 } else { 1602 key.type = BTRFS_EXTENT_ITEM_KEY; 1603 key.offset = head->num_bytes; 1604 } 1605 | 1581 struct btrfs_key key; 1582 struct btrfs_path *path; 1583 struct btrfs_extent_item *ei; 1584 struct extent_buffer *leaf; 1585 u32 item_size; 1586 int ret; 1587 int err = 0; 1588 int metadata = !extent_op->is_data; --- 13 unchanged lines hidden (view full) --- 1602 if (metadata) { 1603 key.type = BTRFS_METADATA_ITEM_KEY; 1604 key.offset = extent_op->level; 1605 } else { 1606 key.type = BTRFS_EXTENT_ITEM_KEY; 1607 key.offset = head->num_bytes; 1608 } 1609 |
1610 root = btrfs_extent_root(fs_info, key.objectid); |
|
1606again: | 1611again: |
1607 ret = btrfs_search_slot(trans, fs_info->extent_root, &key, path, 0, 1); | 1612 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); |
1608 if (ret < 0) { 1609 err = ret; 1610 goto out; 1611 } 1612 if (ret > 0) { 1613 if (metadata) { 1614 if (path->slots[0] > 0) { 1615 path->slots[0]--; --- 666 unchanged lines hidden (view full) --- 2282} 2283 2284static noinline int check_committed_ref(struct btrfs_root *root, 2285 struct btrfs_path *path, 2286 u64 objectid, u64 offset, u64 bytenr, 2287 bool strict) 2288{ 2289 struct btrfs_fs_info *fs_info = root->fs_info; | 1613 if (ret < 0) { 1614 err = ret; 1615 goto out; 1616 } 1617 if (ret > 0) { 1618 if (metadata) { 1619 if (path->slots[0] > 0) { 1620 path->slots[0]--; --- 666 unchanged lines hidden (view full) --- 2287} 2288 2289static noinline int check_committed_ref(struct btrfs_root *root, 2290 struct btrfs_path *path, 2291 u64 objectid, u64 offset, u64 bytenr, 2292 bool strict) 2293{ 2294 struct btrfs_fs_info *fs_info = root->fs_info; |
2290 struct btrfs_root *extent_root = fs_info->extent_root; | 2295 struct btrfs_root *extent_root = btrfs_extent_root(fs_info, bytenr); |
2291 struct extent_buffer *leaf; 2292 struct btrfs_extent_data_ref *ref; 2293 struct btrfs_extent_inline_ref *iref; 2294 struct btrfs_extent_item *ei; 2295 struct btrfs_key key; 2296 u32 item_size; 2297 int type; 2298 int ret; --- 618 unchanged lines hidden (view full) --- 2917 struct btrfs_delayed_ref_node *node, u64 parent, 2918 u64 root_objectid, u64 owner_objectid, 2919 u64 owner_offset, int refs_to_drop, 2920 struct btrfs_delayed_extent_op *extent_op) 2921{ 2922 struct btrfs_fs_info *info = trans->fs_info; 2923 struct btrfs_key key; 2924 struct btrfs_path *path; | 2296 struct extent_buffer *leaf; 2297 struct btrfs_extent_data_ref *ref; 2298 struct btrfs_extent_inline_ref *iref; 2299 struct btrfs_extent_item *ei; 2300 struct btrfs_key key; 2301 u32 item_size; 2302 int type; 2303 int ret; --- 618 unchanged lines hidden (view full) --- 2922 struct btrfs_delayed_ref_node *node, u64 parent, 2923 u64 root_objectid, u64 owner_objectid, 2924 u64 owner_offset, int refs_to_drop, 2925 struct btrfs_delayed_extent_op *extent_op) 2926{ 2927 struct btrfs_fs_info *info = trans->fs_info; 2928 struct btrfs_key key; 2929 struct btrfs_path *path; |
2925 struct btrfs_root *extent_root = info->extent_root; | 2930 struct btrfs_root *extent_root; |
2926 struct extent_buffer *leaf; 2927 struct btrfs_extent_item *ei; 2928 struct btrfs_extent_inline_ref *iref; 2929 int ret; 2930 int is_data; 2931 int extent_slot = 0; 2932 int found_extent = 0; 2933 int num_to_del = 1; 2934 u32 item_size; 2935 u64 refs; 2936 u64 bytenr = node->bytenr; 2937 u64 num_bytes = node->num_bytes; 2938 int last_ref = 0; 2939 bool skinny_metadata = btrfs_fs_incompat(info, SKINNY_METADATA); 2940 | 2931 struct extent_buffer *leaf; 2932 struct btrfs_extent_item *ei; 2933 struct btrfs_extent_inline_ref *iref; 2934 int ret; 2935 int is_data; 2936 int extent_slot = 0; 2937 int found_extent = 0; 2938 int num_to_del = 1; 2939 u32 item_size; 2940 u64 refs; 2941 u64 bytenr = node->bytenr; 2942 u64 num_bytes = node->num_bytes; 2943 int last_ref = 0; 2944 bool skinny_metadata = btrfs_fs_incompat(info, SKINNY_METADATA); 2945 |
2946 extent_root = btrfs_extent_root(info, bytenr); 2947 |
|
2941 path = btrfs_alloc_path(); 2942 if (!path) 2943 return -ENOMEM; 2944 2945 is_data = owner_objectid >= BTRFS_FIRST_FREE_OBJECTID; 2946 2947 if (!is_data && refs_to_drop != 1) { 2948 btrfs_crit(info, --- 1618 unchanged lines hidden (view full) --- 4567} 4568 4569static int alloc_reserved_file_extent(struct btrfs_trans_handle *trans, 4570 u64 parent, u64 root_objectid, 4571 u64 flags, u64 owner, u64 offset, 4572 struct btrfs_key *ins, int ref_mod) 4573{ 4574 struct btrfs_fs_info *fs_info = trans->fs_info; | 2948 path = btrfs_alloc_path(); 2949 if (!path) 2950 return -ENOMEM; 2951 2952 is_data = owner_objectid >= BTRFS_FIRST_FREE_OBJECTID; 2953 2954 if (!is_data && refs_to_drop != 1) { 2955 btrfs_crit(info, --- 1618 unchanged lines hidden (view full) --- 4574} 4575 4576static int alloc_reserved_file_extent(struct btrfs_trans_handle *trans, 4577 u64 parent, u64 root_objectid, 4578 u64 flags, u64 owner, u64 offset, 4579 struct btrfs_key *ins, int ref_mod) 4580{ 4581 struct btrfs_fs_info *fs_info = trans->fs_info; |
4582 struct btrfs_root *extent_root; |
|
4575 int ret; 4576 struct btrfs_extent_item *extent_item; 4577 struct btrfs_extent_inline_ref *iref; 4578 struct btrfs_path *path; 4579 struct extent_buffer *leaf; 4580 int type; 4581 u32 size; 4582 4583 if (parent > 0) 4584 type = BTRFS_SHARED_DATA_REF_KEY; 4585 else 4586 type = BTRFS_EXTENT_DATA_REF_KEY; 4587 4588 size = sizeof(*extent_item) + btrfs_extent_inline_ref_size(type); 4589 4590 path = btrfs_alloc_path(); 4591 if (!path) 4592 return -ENOMEM; 4593 | 4583 int ret; 4584 struct btrfs_extent_item *extent_item; 4585 struct btrfs_extent_inline_ref *iref; 4586 struct btrfs_path *path; 4587 struct extent_buffer *leaf; 4588 int type; 4589 u32 size; 4590 4591 if (parent > 0) 4592 type = BTRFS_SHARED_DATA_REF_KEY; 4593 else 4594 type = BTRFS_EXTENT_DATA_REF_KEY; 4595 4596 size = sizeof(*extent_item) + btrfs_extent_inline_ref_size(type); 4597 4598 path = btrfs_alloc_path(); 4599 if (!path) 4600 return -ENOMEM; 4601 |
4594 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, 4595 ins, size); | 4602 extent_root = btrfs_extent_root(fs_info, ins->objectid); 4603 ret = btrfs_insert_empty_item(trans, extent_root, path, ins, size); |
4596 if (ret) { 4597 btrfs_free_path(path); 4598 return ret; 4599 } 4600 4601 leaf = path->nodes[0]; 4602 extent_item = btrfs_item_ptr(leaf, path->slots[0], 4603 struct btrfs_extent_item); --- 35 unchanged lines hidden (view full) --- 4639 return ret; 4640} 4641 4642static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans, 4643 struct btrfs_delayed_ref_node *node, 4644 struct btrfs_delayed_extent_op *extent_op) 4645{ 4646 struct btrfs_fs_info *fs_info = trans->fs_info; | 4604 if (ret) { 4605 btrfs_free_path(path); 4606 return ret; 4607 } 4608 4609 leaf = path->nodes[0]; 4610 extent_item = btrfs_item_ptr(leaf, path->slots[0], 4611 struct btrfs_extent_item); --- 35 unchanged lines hidden (view full) --- 4647 return ret; 4648} 4649 4650static int alloc_reserved_tree_block(struct btrfs_trans_handle *trans, 4651 struct btrfs_delayed_ref_node *node, 4652 struct btrfs_delayed_extent_op *extent_op) 4653{ 4654 struct btrfs_fs_info *fs_info = trans->fs_info; |
4655 struct btrfs_root *extent_root; |
|
4647 int ret; 4648 struct btrfs_extent_item *extent_item; 4649 struct btrfs_key extent_key; 4650 struct btrfs_tree_block_info *block_info; 4651 struct btrfs_extent_inline_ref *iref; 4652 struct btrfs_path *path; 4653 struct extent_buffer *leaf; 4654 struct btrfs_delayed_tree_ref *ref; --- 15 unchanged lines hidden (view full) --- 4670 size += sizeof(*block_info); 4671 num_bytes = node->num_bytes; 4672 } 4673 4674 path = btrfs_alloc_path(); 4675 if (!path) 4676 return -ENOMEM; 4677 | 4656 int ret; 4657 struct btrfs_extent_item *extent_item; 4658 struct btrfs_key extent_key; 4659 struct btrfs_tree_block_info *block_info; 4660 struct btrfs_extent_inline_ref *iref; 4661 struct btrfs_path *path; 4662 struct extent_buffer *leaf; 4663 struct btrfs_delayed_tree_ref *ref; --- 15 unchanged lines hidden (view full) --- 4679 size += sizeof(*block_info); 4680 num_bytes = node->num_bytes; 4681 } 4682 4683 path = btrfs_alloc_path(); 4684 if (!path) 4685 return -ENOMEM; 4686 |
4678 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, 4679 &extent_key, size); | 4687 extent_root = btrfs_extent_root(fs_info, extent_key.objectid); 4688 ret = btrfs_insert_empty_item(trans, extent_root, path, &extent_key, 4689 size); |
4680 if (ret) { 4681 btrfs_free_path(path); 4682 return ret; 4683 } 4684 4685 leaf = path->nodes[0]; 4686 extent_item = btrfs_item_ptr(leaf, path->slots[0], 4687 struct btrfs_extent_item); --- 1450 unchanged lines hidden --- | 4690 if (ret) { 4691 btrfs_free_path(path); 4692 return ret; 4693 } 4694 4695 leaf = path->nodes[0]; 4696 extent_item = btrfs_item_ptr(leaf, path->slots[0], 4697 struct btrfs_extent_item); --- 1450 unchanged lines hidden --- |