Lines Matching refs:fs_info
42 static int tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
220 spin_lock(&root->fs_info->trans_lock); in add_root_to_dirty_list()
225 &root->fs_info->dirty_cowonly_roots); in add_root_to_dirty_list()
228 &root->fs_info->dirty_cowonly_roots); in add_root_to_dirty_list()
230 spin_unlock(&root->fs_info->trans_lock); in add_root_to_dirty_list()
249 trans->transid != root->fs_info->running_transaction->transid); in btrfs_copy_root()
275 write_extent_buffer(cow, root->fs_info->fsid, btrfs_header_fsid(), in btrfs_copy_root()
338 static inline u64 btrfs_inc_tree_mod_seq(struct btrfs_fs_info *fs_info) in btrfs_inc_tree_mod_seq() argument
340 return atomic64_inc_return(&fs_info->tree_mod_seq); in btrfs_inc_tree_mod_seq()
351 u64 btrfs_get_tree_mod_seq(struct btrfs_fs_info *fs_info, in btrfs_get_tree_mod_seq() argument
354 write_lock(&fs_info->tree_mod_log_lock); in btrfs_get_tree_mod_seq()
356 elem->seq = btrfs_inc_tree_mod_seq(fs_info); in btrfs_get_tree_mod_seq()
357 list_add_tail(&elem->list, &fs_info->tree_mod_seq_list); in btrfs_get_tree_mod_seq()
359 write_unlock(&fs_info->tree_mod_log_lock); in btrfs_get_tree_mod_seq()
364 void btrfs_put_tree_mod_seq(struct btrfs_fs_info *fs_info, in btrfs_put_tree_mod_seq() argument
378 write_lock(&fs_info->tree_mod_log_lock); in btrfs_put_tree_mod_seq()
382 list_for_each_entry(cur_elem, &fs_info->tree_mod_seq_list, list) { in btrfs_put_tree_mod_seq()
389 write_unlock(&fs_info->tree_mod_log_lock); in btrfs_put_tree_mod_seq()
400 tm_root = &fs_info->tree_mod_log; in btrfs_put_tree_mod_seq()
409 write_unlock(&fs_info->tree_mod_log_lock); in btrfs_put_tree_mod_seq()
423 __tree_mod_log_insert(struct btrfs_fs_info *fs_info, struct tree_mod_elem *tm) in __tree_mod_log_insert() argument
432 tm->seq = btrfs_inc_tree_mod_seq(fs_info); in __tree_mod_log_insert()
434 tm_root = &fs_info->tree_mod_log; in __tree_mod_log_insert()
462 static inline int tree_mod_dont_log(struct btrfs_fs_info *fs_info, in tree_mod_dont_log() argument
465 if (list_empty(&(fs_info)->tree_mod_seq_list)) in tree_mod_dont_log()
470 write_lock(&fs_info->tree_mod_log_lock); in tree_mod_dont_log()
471 if (list_empty(&(fs_info)->tree_mod_seq_list)) { in tree_mod_dont_log()
472 write_unlock(&fs_info->tree_mod_log_lock); in tree_mod_dont_log()
480 static inline int tree_mod_need_log(const struct btrfs_fs_info *fs_info, in tree_mod_need_log() argument
484 if (list_empty(&(fs_info)->tree_mod_seq_list)) in tree_mod_need_log()
516 tree_mod_log_insert_key(struct btrfs_fs_info *fs_info, in tree_mod_log_insert_key() argument
523 if (!tree_mod_need_log(fs_info, eb)) in tree_mod_log_insert_key()
530 if (tree_mod_dont_log(fs_info, eb)) { in tree_mod_log_insert_key()
535 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_key()
536 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_insert_key()
544 tree_mod_log_insert_move(struct btrfs_fs_info *fs_info, in tree_mod_log_insert_move() argument
554 if (!tree_mod_need_log(fs_info, eb)) in tree_mod_log_insert_move()
582 if (tree_mod_dont_log(fs_info, eb)) in tree_mod_log_insert_move()
592 ret = __tree_mod_log_insert(fs_info, tm_list[i]); in tree_mod_log_insert_move()
597 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_move()
600 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_insert_move()
607 rb_erase(&tm_list[i]->node, &fs_info->tree_mod_log); in tree_mod_log_insert_move()
611 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_insert_move()
619 __tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, in __tree_mod_log_free_eb() argument
627 ret = __tree_mod_log_insert(fs_info, tm_list[i]); in __tree_mod_log_free_eb()
631 &fs_info->tree_mod_log); in __tree_mod_log_free_eb()
640 tree_mod_log_insert_root(struct btrfs_fs_info *fs_info, in tree_mod_log_insert_root() argument
651 if (!tree_mod_need_log(fs_info, NULL)) in tree_mod_log_insert_root()
684 if (tree_mod_dont_log(fs_info, NULL)) in tree_mod_log_insert_root()
688 ret = __tree_mod_log_free_eb(fs_info, tm_list, nritems); in tree_mod_log_insert_root()
690 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_root()
692 write_unlock(&fs_info->tree_mod_log_lock); in tree_mod_log_insert_root()
711 __tree_mod_log_search(struct btrfs_fs_info *fs_info, u64 start, u64 min_seq, in __tree_mod_log_search() argument
720 read_lock(&fs_info->tree_mod_log_lock); in __tree_mod_log_search()
721 tm_root = &fs_info->tree_mod_log; in __tree_mod_log_search()
748 read_unlock(&fs_info->tree_mod_log_lock); in __tree_mod_log_search()
759 tree_mod_log_search_oldest(struct btrfs_fs_info *fs_info, u64 start, in tree_mod_log_search_oldest() argument
762 return __tree_mod_log_search(fs_info, start, min_seq, 1); in tree_mod_log_search_oldest()
771 tree_mod_log_search(struct btrfs_fs_info *fs_info, u64 start, u64 min_seq) in tree_mod_log_search() argument
773 return __tree_mod_log_search(fs_info, start, min_seq, 0); in tree_mod_log_search()
777 tree_mod_log_eb_copy(struct btrfs_fs_info *fs_info, struct extent_buffer *dst, in tree_mod_log_eb_copy() argument
787 if (!tree_mod_need_log(fs_info, NULL)) in tree_mod_log_eb_copy()
816 if (tree_mod_dont_log(fs_info, NULL)) in tree_mod_log_eb_copy()
821 ret = __tree_mod_log_insert(fs_info, tm_list_rem[i]); in tree_mod_log_eb_copy()
824 ret = __tree_mod_log_insert(fs_info, tm_list_add[i]); in tree_mod_log_eb_copy()
829 write_unlock(&fs_info->tree_mod_log_lock); in tree_mod_log_eb_copy()
837 rb_erase(&tm_list[i]->node, &fs_info->tree_mod_log); in tree_mod_log_eb_copy()
841 write_unlock(&fs_info->tree_mod_log_lock); in tree_mod_log_eb_copy()
848 tree_mod_log_eb_move(struct btrfs_fs_info *fs_info, struct extent_buffer *dst, in tree_mod_log_eb_move() argument
852 ret = tree_mod_log_insert_move(fs_info, dst, dst_offset, src_offset, in tree_mod_log_eb_move()
858 tree_mod_log_set_node_key(struct btrfs_fs_info *fs_info, in tree_mod_log_set_node_key() argument
863 ret = tree_mod_log_insert_key(fs_info, eb, slot, in tree_mod_log_set_node_key()
870 tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, struct extent_buffer *eb) in tree_mod_log_free_eb() argument
880 if (!tree_mod_need_log(fs_info, NULL)) in tree_mod_log_free_eb()
897 if (tree_mod_dont_log(fs_info, eb)) in tree_mod_log_free_eb()
900 ret = __tree_mod_log_free_eb(fs_info, tm_list, nritems); in tree_mod_log_free_eb()
901 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_free_eb()
922 ret = tree_mod_log_insert_root(root->fs_info, root->node, in tree_mod_log_set_root_pointer()
990 btrfs_std_error(root->fs_info, ret, NULL); in update_ref_for_cow()
1051 clean_tree_block(trans, root->fs_info, buf); in update_ref_for_cow()
1089 trans->transid != root->fs_info->running_transaction->transid); in __btrfs_cow_block()
1127 write_extent_buffer(cow, root->fs_info->fsid, btrfs_header_fsid(), in __btrfs_cow_block()
1171 tree_mod_log_insert_key(root->fs_info, parent, parent_slot, in __btrfs_cow_block()
1179 ret = tree_mod_log_free_eb(root->fs_info, buf); in __btrfs_cow_block()
1203 __tree_mod_log_oldest_root(struct btrfs_fs_info *fs_info, in __tree_mod_log_oldest_root() argument
1220 tm = tree_mod_log_search_oldest(fs_info, root_logical, in __tree_mod_log_oldest_root()
1258 __tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct extent_buffer *eb, in __tree_mod_log_rewind() argument
1269 read_lock(&fs_info->tree_mod_log_lock); in __tree_mod_log_rewind()
1324 read_unlock(&fs_info->tree_mod_log_lock); in __tree_mod_log_rewind()
1336 tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct btrfs_path *path, in tree_mod_log_rewind() argument
1348 tm = tree_mod_log_search(fs_info, eb->start, time_seq); in tree_mod_log_rewind()
1357 eb_rewin = alloc_dummy_extent_buffer(fs_info, eb->start); in tree_mod_log_rewind()
1384 __tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm); in tree_mod_log_rewind()
1386 BTRFS_NODEPTRS_PER_BLOCK(fs_info->tree_root)); in tree_mod_log_rewind()
1411 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in get_old_root()
1423 tm = tree_mod_log_search(root->fs_info, logical, time_seq); in get_old_root()
1431 btrfs_warn(root->fs_info, in get_old_root()
1443 eb = alloc_dummy_extent_buffer(root->fs_info, logical); in get_old_root()
1464 __tree_mod_log_rewind(root->fs_info, eb, time_seq, tm); in get_old_root()
1478 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in btrfs_old_root_level()
1532 if (trans->transaction != root->fs_info->running_transaction) in btrfs_cow_block()
1535 root->fs_info->running_transaction->transid); in btrfs_cow_block()
1537 if (trans->transid != root->fs_info->generation) in btrfs_cow_block()
1539 trans->transid, root->fs_info->generation); in btrfs_cow_block()
1634 WARN_ON(trans->transaction != root->fs_info->running_transaction); in btrfs_realloc_node()
1635 WARN_ON(trans->transid != root->fs_info->generation); in btrfs_realloc_node()
1672 cur = btrfs_find_tree_block(root->fs_info, blocknr); in btrfs_realloc_node()
1905 btrfs_std_error(root->fs_info, ret, NULL); in balance_level()
1926 clean_tree_block(trans, root->fs_info, mid); in balance_level()
1980 clean_tree_block(trans, root->fs_info, right); in balance_level()
1990 tree_mod_log_set_node_key(root->fs_info, parent, in balance_level()
2008 btrfs_std_error(root->fs_info, ret, NULL); in balance_level()
2024 clean_tree_block(trans, root->fs_info, mid); in balance_level()
2035 tree_mod_log_set_node_key(root->fs_info, parent, in balance_level()
2134 tree_mod_log_set_node_key(root->fs_info, parent, in push_nodes_for_insert()
2187 tree_mod_log_set_node_key(root->fs_info, parent, in push_nodes_for_insert()
2242 eb = btrfs_find_tree_block(root->fs_info, search); in reada_for_search()
2302 eb = btrfs_find_tree_block(root->fs_info, block1); in reada_for_balance()
2315 eb = btrfs_find_tree_block(root->fs_info, block2); in reada_for_balance()
2433 tmp = btrfs_find_tree_block(root->fs_info, blocknr); in read_block_for_search()
2704 down_read(&root->fs_info->commit_root_sem); in btrfs_search_slot()
2709 up_read(&root->fs_info->commit_root_sem); in btrfs_search_slot()
3014 b = tree_mod_log_rewind(root->fs_info, p, b, time_seq); in btrfs_search_old_slot()
3121 static void fixup_low_keys(struct btrfs_fs_info *fs_info, in fixup_low_keys() argument
3133 tree_mod_log_set_node_key(fs_info, t, tslot, 1); in fixup_low_keys()
3147 void btrfs_set_item_key_safe(struct btrfs_fs_info *fs_info, in btrfs_set_item_key_safe() argument
3170 fixup_low_keys(fs_info, path, &disk_key, 1); in btrfs_set_item_key_safe()
3216 ret = tree_mod_log_eb_copy(root->fs_info, dst, src, dst_nritems, 0, in push_node_left()
3285 tree_mod_log_eb_move(root->fs_info, dst, push_items, 0, dst_nritems); in balance_node_right()
3291 ret = tree_mod_log_eb_copy(root->fs_info, dst, src, 0, in balance_node_right()
3352 write_extent_buffer(c, root->fs_info->fsid, btrfs_header_fsid(), in insert_new_root()
3355 write_extent_buffer(c, root->fs_info->chunk_tree_uuid, in insert_new_root()
3406 tree_mod_log_eb_move(root->fs_info, lower, slot + 1, in insert_ptr()
3414 ret = tree_mod_log_insert_key(root->fs_info, lower, slot, in insert_ptr()
3489 write_extent_buffer(split, root->fs_info->fsid, in split_node()
3491 write_extent_buffer(split, root->fs_info->chunk_tree_uuid, in split_node()
3495 ret = tree_mod_log_eb_copy(root->fs_info, split, c, 0, in split_node()
3567 btrfs_crit(root->fs_info, in btrfs_leaf_free_space()
3689 clean_tree_block(trans, root->fs_info, left); in __push_leaf_right()
3701 clean_tree_block(trans, root->fs_info, path->nodes[0]); in __push_leaf_right()
3925 clean_tree_block(trans, root->fs_info, right); in __push_leaf_left()
3928 fixup_low_keys(root->fs_info, path, &disk_key, 1); in __push_leaf_left()
4165 struct btrfs_fs_info *fs_info = root->fs_info; in split_leaf() local
4269 write_extent_buffer(right, fs_info->fsid, in split_leaf()
4272 write_extent_buffer(right, fs_info->chunk_tree_uuid, in split_leaf()
4295 fixup_low_keys(fs_info, path, &disk_key, 1); in split_leaf()
4613 fixup_low_keys(root->fs_info, path, &disk_key, 1); in btrfs_truncate_item()
4659 btrfs_crit(root->fs_info, "slot %d too large, nritems %d", in btrfs_extend_item()
4714 fixup_low_keys(root->fs_info, path, &disk_key, 1); in setup_items_for_insert()
4728 btrfs_crit(root->fs_info, "not enough freespace need %u have %d", in setup_items_for_insert()
4738 btrfs_crit(root->fs_info, "slot %d old_data %d data_end %d", in setup_items_for_insert()
4863 tree_mod_log_eb_move(root->fs_info, parent, slot, in del_ptr()
4871 ret = tree_mod_log_insert_key(root->fs_info, parent, slot, in del_ptr()
4886 fixup_low_keys(root->fs_info, path, &disk_key, level + 1); in del_ptr()
4979 clean_tree_block(trans, root->fs_info, leaf); in btrfs_del_items()
4988 fixup_low_keys(root->fs_info, path, &disk_key, 1); in btrfs_del_items()
5399 down_read(&left_root->fs_info->commit_root_sem); in btrfs_compare_trees()
5409 up_read(&left_root->fs_info->commit_root_sem); in btrfs_compare_trees()