|
@@ -38,8 +38,7 @@ static int balance_node_right(struct btrfs_trans_handle *trans,
|
|
struct extent_buffer *dst_buf,
|
|
struct extent_buffer *dst_buf,
|
|
struct extent_buffer *src_buf);
|
|
struct extent_buffer *src_buf);
|
|
static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
|
static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
|
- struct btrfs_path *path, int level, int slot,
|
|
|
|
- int tree_mod_log);
|
|
|
|
|
|
+ struct btrfs_path *path, int level, int slot);
|
|
static void tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
|
|
static void tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
|
|
struct extent_buffer *eb);
|
|
struct extent_buffer *eb);
|
|
struct extent_buffer *read_old_tree_block(struct btrfs_root *root, u64 bytenr,
|
|
struct extent_buffer *read_old_tree_block(struct btrfs_root *root, u64 bytenr,
|
|
@@ -1827,7 +1826,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
|
|
if (btrfs_header_nritems(right) == 0) {
|
|
if (btrfs_header_nritems(right) == 0) {
|
|
clean_tree_block(trans, root, right);
|
|
clean_tree_block(trans, root, right);
|
|
btrfs_tree_unlock(right);
|
|
btrfs_tree_unlock(right);
|
|
- del_ptr(trans, root, path, level + 1, pslot + 1, 1);
|
|
|
|
|
|
+ del_ptr(trans, root, path, level + 1, pslot + 1);
|
|
root_sub_used(root, right->len);
|
|
root_sub_used(root, right->len);
|
|
btrfs_free_tree_block(trans, root, right, 0, 1);
|
|
btrfs_free_tree_block(trans, root, right, 0, 1);
|
|
free_extent_buffer_stale(right);
|
|
free_extent_buffer_stale(right);
|
|
@@ -1871,7 +1870,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
|
|
if (btrfs_header_nritems(mid) == 0) {
|
|
if (btrfs_header_nritems(mid) == 0) {
|
|
clean_tree_block(trans, root, mid);
|
|
clean_tree_block(trans, root, mid);
|
|
btrfs_tree_unlock(mid);
|
|
btrfs_tree_unlock(mid);
|
|
- del_ptr(trans, root, path, level + 1, pslot, 1);
|
|
|
|
|
|
+ del_ptr(trans, root, path, level + 1, pslot);
|
|
root_sub_used(root, mid->len);
|
|
root_sub_used(root, mid->len);
|
|
btrfs_free_tree_block(trans, root, mid, 0, 1);
|
|
btrfs_free_tree_block(trans, root, mid, 0, 1);
|
|
free_extent_buffer_stale(mid);
|
|
free_extent_buffer_stale(mid);
|
|
@@ -4602,14 +4601,13 @@ int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root
|
|
* empty a node.
|
|
* empty a node.
|
|
*/
|
|
*/
|
|
static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
|
static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
|
- struct btrfs_path *path, int level, int slot,
|
|
|
|
- int tree_mod_log)
|
|
|
|
|
|
+ struct btrfs_path *path, int level, int slot)
|
|
{
|
|
{
|
|
struct extent_buffer *parent = path->nodes[level];
|
|
struct extent_buffer *parent = path->nodes[level];
|
|
u32 nritems;
|
|
u32 nritems;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
- if (tree_mod_log && level) {
|
|
|
|
|
|
+ if (level) {
|
|
ret = tree_mod_log_insert_key(root->fs_info, parent, slot,
|
|
ret = tree_mod_log_insert_key(root->fs_info, parent, slot,
|
|
MOD_LOG_KEY_REMOVE);
|
|
MOD_LOG_KEY_REMOVE);
|
|
BUG_ON(ret < 0);
|
|
BUG_ON(ret < 0);
|
|
@@ -4617,7 +4615,7 @@ static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
|
|
|
|
|
nritems = btrfs_header_nritems(parent);
|
|
nritems = btrfs_header_nritems(parent);
|
|
if (slot != nritems - 1) {
|
|
if (slot != nritems - 1) {
|
|
- if (tree_mod_log && level)
|
|
|
|
|
|
+ if (level)
|
|
tree_mod_log_eb_move(root->fs_info, parent, slot,
|
|
tree_mod_log_eb_move(root->fs_info, parent, slot,
|
|
slot + 1, nritems - slot - 1);
|
|
slot + 1, nritems - slot - 1);
|
|
memmove_extent_buffer(parent,
|
|
memmove_extent_buffer(parent,
|
|
@@ -4658,7 +4656,7 @@ static noinline void btrfs_del_leaf(struct btrfs_trans_handle *trans,
|
|
struct extent_buffer *leaf)
|
|
struct extent_buffer *leaf)
|
|
{
|
|
{
|
|
WARN_ON(btrfs_header_generation(leaf) != trans->transid);
|
|
WARN_ON(btrfs_header_generation(leaf) != trans->transid);
|
|
- del_ptr(trans, root, path, 1, path->slots[1], 1);
|
|
|
|
|
|
+ del_ptr(trans, root, path, 1, path->slots[1]);
|
|
|
|
|
|
/*
|
|
/*
|
|
* btrfs_free_extent is expensive, we want to make sure we
|
|
* btrfs_free_extent is expensive, we want to make sure we
|