ctree.c (42c9419a4c01910e9c46b0c2bb9090f76295bf01) ctree.c (e23efd8e8767165a6103cf0a4fe273f6b9f182f2)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2007,2008 Oracle. All rights reserved.
4 */
5
6#include <linux/sched.h>
7#include <linux/slab.h>
8#include <linux/rbtree.h>

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

2607 return ret;
2608 }
2609 ret = btrfs_tree_mod_log_eb_copy(dst, src, dst_nritems, 0, push_items);
2610 if (ret) {
2611 btrfs_abort_transaction(trans, ret);
2612 return ret;
2613 }
2614 copy_extent_buffer(dst, src,
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2007,2008 Oracle. All rights reserved.
4 */
5
6#include <linux/sched.h>
7#include <linux/slab.h>
8#include <linux/rbtree.h>

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

2607 return ret;
2608 }
2609 ret = btrfs_tree_mod_log_eb_copy(dst, src, dst_nritems, 0, push_items);
2610 if (ret) {
2611 btrfs_abort_transaction(trans, ret);
2612 return ret;
2613 }
2614 copy_extent_buffer(dst, src,
2615 btrfs_node_key_ptr_offset(dst_nritems),
2616 btrfs_node_key_ptr_offset(0),
2615 btrfs_node_key_ptr_offset(dst, dst_nritems),
2616 btrfs_node_key_ptr_offset(src, 0),
2617 push_items * sizeof(struct btrfs_key_ptr));
2618
2619 if (push_items < src_nritems) {
2620 /*
2621 * Don't call btrfs_tree_mod_log_insert_move() here, key removal
2622 * was already fully logged by btrfs_tree_mod_log_eb_copy() above.
2623 */
2617 push_items * sizeof(struct btrfs_key_ptr));
2618
2619 if (push_items < src_nritems) {
2620 /*
2621 * Don't call btrfs_tree_mod_log_insert_move() here, key removal
2622 * was already fully logged by btrfs_tree_mod_log_eb_copy() above.
2623 */
2624 memmove_extent_buffer(src, btrfs_node_key_ptr_offset(0),
2625 btrfs_node_key_ptr_offset(push_items),
2624 memmove_extent_buffer(src, btrfs_node_key_ptr_offset(src, 0),
2625 btrfs_node_key_ptr_offset(src, push_items),
2626 (src_nritems - push_items) *
2627 sizeof(struct btrfs_key_ptr));
2628 }
2629 btrfs_set_header_nritems(src, src_nritems - push_items);
2630 btrfs_set_header_nritems(dst, dst_nritems + push_items);
2631 btrfs_mark_buffer_dirty(src);
2632 btrfs_mark_buffer_dirty(dst);
2633

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

2677 /* dst is the right eb, src is the middle eb */
2678 if (check_sibling_keys(src, dst)) {
2679 ret = -EUCLEAN;
2680 btrfs_abort_transaction(trans, ret);
2681 return ret;
2682 }
2683 ret = btrfs_tree_mod_log_insert_move(dst, push_items, 0, dst_nritems);
2684 BUG_ON(ret < 0);
2626 (src_nritems - push_items) *
2627 sizeof(struct btrfs_key_ptr));
2628 }
2629 btrfs_set_header_nritems(src, src_nritems - push_items);
2630 btrfs_set_header_nritems(dst, dst_nritems + push_items);
2631 btrfs_mark_buffer_dirty(src);
2632 btrfs_mark_buffer_dirty(dst);
2633

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

2677 /* dst is the right eb, src is the middle eb */
2678 if (check_sibling_keys(src, dst)) {
2679 ret = -EUCLEAN;
2680 btrfs_abort_transaction(trans, ret);
2681 return ret;
2682 }
2683 ret = btrfs_tree_mod_log_insert_move(dst, push_items, 0, dst_nritems);
2684 BUG_ON(ret < 0);
2685 memmove_extent_buffer(dst, btrfs_node_key_ptr_offset(push_items),
2686 btrfs_node_key_ptr_offset(0),
2685 memmove_extent_buffer(dst, btrfs_node_key_ptr_offset(dst, push_items),
2686 btrfs_node_key_ptr_offset(dst, 0),
2687 (dst_nritems) *
2688 sizeof(struct btrfs_key_ptr));
2689
2690 ret = btrfs_tree_mod_log_eb_copy(dst, src, 0, src_nritems - push_items,
2691 push_items);
2692 if (ret) {
2693 btrfs_abort_transaction(trans, ret);
2694 return ret;
2695 }
2696 copy_extent_buffer(dst, src,
2687 (dst_nritems) *
2688 sizeof(struct btrfs_key_ptr));
2689
2690 ret = btrfs_tree_mod_log_eb_copy(dst, src, 0, src_nritems - push_items,
2691 push_items);
2692 if (ret) {
2693 btrfs_abort_transaction(trans, ret);
2694 return ret;
2695 }
2696 copy_extent_buffer(dst, src,
2697 btrfs_node_key_ptr_offset(0),
2698 btrfs_node_key_ptr_offset(src_nritems - push_items),
2697 btrfs_node_key_ptr_offset(dst, 0),
2698 btrfs_node_key_ptr_offset(src, src_nritems - push_items),
2699 push_items * sizeof(struct btrfs_key_ptr));
2700
2701 btrfs_set_header_nritems(src, src_nritems - push_items);
2702 btrfs_set_header_nritems(dst, dst_nritems + push_items);
2703
2704 btrfs_mark_buffer_dirty(src);
2705 btrfs_mark_buffer_dirty(dst);
2706

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

2793 BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
2794 if (slot != nritems) {
2795 if (level) {
2796 ret = btrfs_tree_mod_log_insert_move(lower, slot + 1,
2797 slot, nritems - slot);
2798 BUG_ON(ret < 0);
2799 }
2800 memmove_extent_buffer(lower,
2699 push_items * sizeof(struct btrfs_key_ptr));
2700
2701 btrfs_set_header_nritems(src, src_nritems - push_items);
2702 btrfs_set_header_nritems(dst, dst_nritems + push_items);
2703
2704 btrfs_mark_buffer_dirty(src);
2705 btrfs_mark_buffer_dirty(dst);
2706

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

2793 BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
2794 if (slot != nritems) {
2795 if (level) {
2796 ret = btrfs_tree_mod_log_insert_move(lower, slot + 1,
2797 slot, nritems - slot);
2798 BUG_ON(ret < 0);
2799 }
2800 memmove_extent_buffer(lower,
2801 btrfs_node_key_ptr_offset(slot + 1),
2802 btrfs_node_key_ptr_offset(slot),
2801 btrfs_node_key_ptr_offset(lower, slot + 1),
2802 btrfs_node_key_ptr_offset(lower, slot),
2803 (nritems - slot) * sizeof(struct btrfs_key_ptr));
2804 }
2805 if (level) {
2806 ret = btrfs_tree_mod_log_insert_key(lower, slot,
2807 BTRFS_MOD_LOG_KEY_ADD);
2808 BUG_ON(ret < 0);
2809 }
2810 btrfs_set_node_key(lower, key, slot);

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

2876 ASSERT(btrfs_header_level(c) == level);
2877
2878 ret = btrfs_tree_mod_log_eb_copy(split, c, 0, mid, c_nritems - mid);
2879 if (ret) {
2880 btrfs_abort_transaction(trans, ret);
2881 return ret;
2882 }
2883 copy_extent_buffer(split, c,
2803 (nritems - slot) * sizeof(struct btrfs_key_ptr));
2804 }
2805 if (level) {
2806 ret = btrfs_tree_mod_log_insert_key(lower, slot,
2807 BTRFS_MOD_LOG_KEY_ADD);
2808 BUG_ON(ret < 0);
2809 }
2810 btrfs_set_node_key(lower, key, slot);

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

2876 ASSERT(btrfs_header_level(c) == level);
2877
2878 ret = btrfs_tree_mod_log_eb_copy(split, c, 0, mid, c_nritems - mid);
2879 if (ret) {
2880 btrfs_abort_transaction(trans, ret);
2881 return ret;
2882 }
2883 copy_extent_buffer(split, c,
2884 btrfs_node_key_ptr_offset(0),
2885 btrfs_node_key_ptr_offset(mid),
2884 btrfs_node_key_ptr_offset(split, 0),
2885 btrfs_node_key_ptr_offset(c, mid),
2886 (c_nritems - mid) * sizeof(struct btrfs_key_ptr));
2887 btrfs_set_header_nritems(split, c_nritems - mid);
2888 btrfs_set_header_nritems(c, mid);
2889
2890 btrfs_mark_buffer_dirty(c);
2891 btrfs_mark_buffer_dirty(split);
2892
2893 insert_ptr(trans, path, &disk_key, split->start,

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

4235 nritems = btrfs_header_nritems(parent);
4236 if (slot != nritems - 1) {
4237 if (level) {
4238 ret = btrfs_tree_mod_log_insert_move(parent, slot,
4239 slot + 1, nritems - slot - 1);
4240 BUG_ON(ret < 0);
4241 }
4242 memmove_extent_buffer(parent,
2886 (c_nritems - mid) * sizeof(struct btrfs_key_ptr));
2887 btrfs_set_header_nritems(split, c_nritems - mid);
2888 btrfs_set_header_nritems(c, mid);
2889
2890 btrfs_mark_buffer_dirty(c);
2891 btrfs_mark_buffer_dirty(split);
2892
2893 insert_ptr(trans, path, &disk_key, split->start,

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

4235 nritems = btrfs_header_nritems(parent);
4236 if (slot != nritems - 1) {
4237 if (level) {
4238 ret = btrfs_tree_mod_log_insert_move(parent, slot,
4239 slot + 1, nritems - slot - 1);
4240 BUG_ON(ret < 0);
4241 }
4242 memmove_extent_buffer(parent,
4243 btrfs_node_key_ptr_offset(slot),
4244 btrfs_node_key_ptr_offset(slot + 1),
4243 btrfs_node_key_ptr_offset(parent, slot),
4244 btrfs_node_key_ptr_offset(parent, slot + 1),
4245 sizeof(struct btrfs_key_ptr) *
4246 (nritems - slot - 1));
4247 } else if (level) {
4248 ret = btrfs_tree_mod_log_insert_key(parent, slot,
4249 BTRFS_MOD_LOG_KEY_REMOVE);
4250 BUG_ON(ret < 0);
4251 }
4252

--- 735 unchanged lines hidden ---
4245 sizeof(struct btrfs_key_ptr) *
4246 (nritems - slot - 1));
4247 } else if (level) {
4248 ret = btrfs_tree_mod_log_insert_key(parent, slot,
4249 BTRFS_MOD_LOG_KEY_REMOVE);
4250 BUG_ON(ret < 0);
4251 }
4252

--- 735 unchanged lines hidden ---