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()
335 static inline void tree_mod_log_read_lock(struct btrfs_fs_info *fs_info) in tree_mod_log_read_lock() argument
337 read_lock(&fs_info->tree_mod_log_lock); in tree_mod_log_read_lock()
340 static inline void tree_mod_log_read_unlock(struct btrfs_fs_info *fs_info) in tree_mod_log_read_unlock() argument
342 read_unlock(&fs_info->tree_mod_log_lock); in tree_mod_log_read_unlock()
345 static inline void tree_mod_log_write_lock(struct btrfs_fs_info *fs_info) in tree_mod_log_write_lock() argument
347 write_lock(&fs_info->tree_mod_log_lock); in tree_mod_log_write_lock()
350 static inline void tree_mod_log_write_unlock(struct btrfs_fs_info *fs_info) in tree_mod_log_write_unlock() argument
352 write_unlock(&fs_info->tree_mod_log_lock); in tree_mod_log_write_unlock()
358 static inline u64 btrfs_inc_tree_mod_seq(struct btrfs_fs_info *fs_info) in btrfs_inc_tree_mod_seq() argument
360 return atomic64_inc_return(&fs_info->tree_mod_seq); in btrfs_inc_tree_mod_seq()
371 u64 btrfs_get_tree_mod_seq(struct btrfs_fs_info *fs_info, in btrfs_get_tree_mod_seq() argument
374 tree_mod_log_write_lock(fs_info); in btrfs_get_tree_mod_seq()
375 spin_lock(&fs_info->tree_mod_seq_lock); in btrfs_get_tree_mod_seq()
377 elem->seq = btrfs_inc_tree_mod_seq(fs_info); in btrfs_get_tree_mod_seq()
378 list_add_tail(&elem->list, &fs_info->tree_mod_seq_list); in btrfs_get_tree_mod_seq()
380 spin_unlock(&fs_info->tree_mod_seq_lock); in btrfs_get_tree_mod_seq()
381 tree_mod_log_write_unlock(fs_info); in btrfs_get_tree_mod_seq()
386 void btrfs_put_tree_mod_seq(struct btrfs_fs_info *fs_info, in btrfs_put_tree_mod_seq() argument
400 spin_lock(&fs_info->tree_mod_seq_lock); in btrfs_put_tree_mod_seq()
404 list_for_each_entry(cur_elem, &fs_info->tree_mod_seq_list, list) { in btrfs_put_tree_mod_seq()
411 spin_unlock(&fs_info->tree_mod_seq_lock); in btrfs_put_tree_mod_seq()
417 spin_unlock(&fs_info->tree_mod_seq_lock); in btrfs_put_tree_mod_seq()
423 tree_mod_log_write_lock(fs_info); in btrfs_put_tree_mod_seq()
424 tm_root = &fs_info->tree_mod_log; in btrfs_put_tree_mod_seq()
433 tree_mod_log_write_unlock(fs_info); in btrfs_put_tree_mod_seq()
447 __tree_mod_log_insert(struct btrfs_fs_info *fs_info, struct tree_mod_elem *tm) in __tree_mod_log_insert() argument
456 tm->seq = btrfs_inc_tree_mod_seq(fs_info); in __tree_mod_log_insert()
458 tm_root = &fs_info->tree_mod_log; in __tree_mod_log_insert()
486 static inline int tree_mod_dont_log(struct btrfs_fs_info *fs_info, in tree_mod_dont_log() argument
489 if (list_empty(&(fs_info)->tree_mod_seq_list)) in tree_mod_dont_log()
494 tree_mod_log_write_lock(fs_info); in tree_mod_dont_log()
495 if (list_empty(&(fs_info)->tree_mod_seq_list)) { in tree_mod_dont_log()
496 tree_mod_log_write_unlock(fs_info); in tree_mod_dont_log()
504 static inline int tree_mod_need_log(const struct btrfs_fs_info *fs_info, in tree_mod_need_log() argument
508 if (list_empty(&(fs_info)->tree_mod_seq_list)) in tree_mod_need_log()
540 tree_mod_log_insert_key(struct btrfs_fs_info *fs_info, in tree_mod_log_insert_key() argument
547 if (!tree_mod_need_log(fs_info, eb)) in tree_mod_log_insert_key()
554 if (tree_mod_dont_log(fs_info, eb)) { in tree_mod_log_insert_key()
559 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_key()
560 tree_mod_log_write_unlock(fs_info); in tree_mod_log_insert_key()
568 tree_mod_log_insert_move(struct btrfs_fs_info *fs_info, in tree_mod_log_insert_move() argument
578 if (!tree_mod_need_log(fs_info, eb)) in tree_mod_log_insert_move()
606 if (tree_mod_dont_log(fs_info, eb)) in tree_mod_log_insert_move()
616 ret = __tree_mod_log_insert(fs_info, tm_list[i]); in tree_mod_log_insert_move()
621 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_move()
624 tree_mod_log_write_unlock(fs_info); in tree_mod_log_insert_move()
631 rb_erase(&tm_list[i]->node, &fs_info->tree_mod_log); in tree_mod_log_insert_move()
635 tree_mod_log_write_unlock(fs_info); in tree_mod_log_insert_move()
643 __tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, in __tree_mod_log_free_eb() argument
651 ret = __tree_mod_log_insert(fs_info, tm_list[i]); in __tree_mod_log_free_eb()
655 &fs_info->tree_mod_log); in __tree_mod_log_free_eb()
664 tree_mod_log_insert_root(struct btrfs_fs_info *fs_info, in tree_mod_log_insert_root() argument
675 if (!tree_mod_need_log(fs_info, NULL)) in tree_mod_log_insert_root()
708 if (tree_mod_dont_log(fs_info, NULL)) in tree_mod_log_insert_root()
712 ret = __tree_mod_log_free_eb(fs_info, tm_list, nritems); in tree_mod_log_insert_root()
714 ret = __tree_mod_log_insert(fs_info, tm); in tree_mod_log_insert_root()
716 tree_mod_log_write_unlock(fs_info); in tree_mod_log_insert_root()
735 __tree_mod_log_search(struct btrfs_fs_info *fs_info, u64 start, u64 min_seq, in __tree_mod_log_search() argument
744 tree_mod_log_read_lock(fs_info); in __tree_mod_log_search()
745 tm_root = &fs_info->tree_mod_log; in __tree_mod_log_search()
772 tree_mod_log_read_unlock(fs_info); in __tree_mod_log_search()
783 tree_mod_log_search_oldest(struct btrfs_fs_info *fs_info, u64 start, in tree_mod_log_search_oldest() argument
786 return __tree_mod_log_search(fs_info, start, min_seq, 1); in tree_mod_log_search_oldest()
795 tree_mod_log_search(struct btrfs_fs_info *fs_info, u64 start, u64 min_seq) in tree_mod_log_search() argument
797 return __tree_mod_log_search(fs_info, start, min_seq, 0); in tree_mod_log_search()
801 tree_mod_log_eb_copy(struct btrfs_fs_info *fs_info, struct extent_buffer *dst, in tree_mod_log_eb_copy() argument
811 if (!tree_mod_need_log(fs_info, NULL)) in tree_mod_log_eb_copy()
840 if (tree_mod_dont_log(fs_info, NULL)) in tree_mod_log_eb_copy()
845 ret = __tree_mod_log_insert(fs_info, tm_list_rem[i]); in tree_mod_log_eb_copy()
848 ret = __tree_mod_log_insert(fs_info, tm_list_add[i]); in tree_mod_log_eb_copy()
853 tree_mod_log_write_unlock(fs_info); in tree_mod_log_eb_copy()
861 rb_erase(&tm_list[i]->node, &fs_info->tree_mod_log); in tree_mod_log_eb_copy()
865 tree_mod_log_write_unlock(fs_info); in tree_mod_log_eb_copy()
872 tree_mod_log_eb_move(struct btrfs_fs_info *fs_info, struct extent_buffer *dst, in tree_mod_log_eb_move() argument
876 ret = tree_mod_log_insert_move(fs_info, dst, dst_offset, src_offset, in tree_mod_log_eb_move()
882 tree_mod_log_set_node_key(struct btrfs_fs_info *fs_info, in tree_mod_log_set_node_key() argument
887 ret = tree_mod_log_insert_key(fs_info, eb, slot, in tree_mod_log_set_node_key()
894 tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, struct extent_buffer *eb) in tree_mod_log_free_eb() argument
904 if (!tree_mod_need_log(fs_info, NULL)) in tree_mod_log_free_eb()
921 if (tree_mod_dont_log(fs_info, eb)) in tree_mod_log_free_eb()
924 ret = __tree_mod_log_free_eb(fs_info, tm_list, nritems); in tree_mod_log_free_eb()
925 tree_mod_log_write_unlock(fs_info); in tree_mod_log_free_eb()
946 ret = tree_mod_log_insert_root(root->fs_info, root->node, in tree_mod_log_set_root_pointer()
1014 btrfs_std_error(root->fs_info, ret); in update_ref_for_cow()
1075 clean_tree_block(trans, root->fs_info, buf); in update_ref_for_cow()
1113 trans->transid != root->fs_info->running_transaction->transid); in __btrfs_cow_block()
1151 write_extent_buffer(cow, root->fs_info->fsid, btrfs_header_fsid(), in __btrfs_cow_block()
1189 tree_mod_log_insert_key(root->fs_info, parent, parent_slot, in __btrfs_cow_block()
1197 ret = tree_mod_log_free_eb(root->fs_info, buf); in __btrfs_cow_block()
1219 __tree_mod_log_oldest_root(struct btrfs_fs_info *fs_info, in __tree_mod_log_oldest_root() argument
1236 tm = tree_mod_log_search_oldest(fs_info, root_logical, in __tree_mod_log_oldest_root()
1274 __tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct extent_buffer *eb, in __tree_mod_log_rewind() argument
1285 tree_mod_log_read_lock(fs_info); in __tree_mod_log_rewind()
1340 tree_mod_log_read_unlock(fs_info); in __tree_mod_log_rewind()
1352 tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct btrfs_path *path, in tree_mod_log_rewind() argument
1364 tm = tree_mod_log_search(fs_info, eb->start, time_seq); in tree_mod_log_rewind()
1373 eb_rewin = alloc_dummy_extent_buffer(fs_info, eb->start); in tree_mod_log_rewind()
1399 __tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm); in tree_mod_log_rewind()
1401 BTRFS_NODEPTRS_PER_BLOCK(fs_info->tree_root)); in tree_mod_log_rewind()
1425 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in get_old_root()
1437 tm = tree_mod_log_search(root->fs_info, logical, time_seq); in get_old_root()
1444 btrfs_warn(root->fs_info, in get_old_root()
1453 eb = alloc_dummy_extent_buffer(root->fs_info, logical); in get_old_root()
1473 __tree_mod_log_rewind(root->fs_info, eb, time_seq, tm); in get_old_root()
1487 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in btrfs_old_root_level()
1541 if (trans->transaction != root->fs_info->running_transaction) in btrfs_cow_block()
1544 root->fs_info->running_transaction->transid); in btrfs_cow_block()
1546 if (trans->transid != root->fs_info->generation) in btrfs_cow_block()
1548 trans->transid, root->fs_info->generation); in btrfs_cow_block()
1642 WARN_ON(trans->transaction != root->fs_info->running_transaction); in btrfs_realloc_node()
1643 WARN_ON(trans->transid != root->fs_info->generation); in btrfs_realloc_node()
1680 cur = btrfs_find_tree_block(root->fs_info, blocknr); in btrfs_realloc_node()
1924 btrfs_std_error(root->fs_info, ret); in balance_level()
1945 clean_tree_block(trans, root->fs_info, mid); in balance_level()
1999 clean_tree_block(trans, root->fs_info, right); in balance_level()
2009 tree_mod_log_set_node_key(root->fs_info, parent, in balance_level()
2027 btrfs_std_error(root->fs_info, ret); in balance_level()
2043 clean_tree_block(trans, root->fs_info, mid); in balance_level()
2054 tree_mod_log_set_node_key(root->fs_info, parent, in balance_level()
2153 tree_mod_log_set_node_key(root->fs_info, parent, in push_nodes_for_insert()
2206 tree_mod_log_set_node_key(root->fs_info, parent, in push_nodes_for_insert()
2261 eb = btrfs_find_tree_block(root->fs_info, search); in reada_for_search()
2321 eb = btrfs_find_tree_block(root->fs_info, block1); in reada_for_balance()
2334 eb = btrfs_find_tree_block(root->fs_info, block2); in reada_for_balance()
2452 tmp = btrfs_find_tree_block(root->fs_info, blocknr); in read_block_for_search()
2723 down_read(&root->fs_info->commit_root_sem); in btrfs_search_slot()
2728 up_read(&root->fs_info->commit_root_sem); in btrfs_search_slot()
3021 b = tree_mod_log_rewind(root->fs_info, p, b, time_seq); in btrfs_search_old_slot()
3128 static void fixup_low_keys(struct btrfs_fs_info *fs_info, in fixup_low_keys() argument
3140 tree_mod_log_set_node_key(fs_info, t, tslot, 1); in fixup_low_keys()
3154 void btrfs_set_item_key_safe(struct btrfs_fs_info *fs_info, in btrfs_set_item_key_safe() argument
3177 fixup_low_keys(fs_info, path, &disk_key, 1); in btrfs_set_item_key_safe()
3223 ret = tree_mod_log_eb_copy(root->fs_info, dst, src, dst_nritems, 0, in push_node_left()
3292 tree_mod_log_eb_move(root->fs_info, dst, push_items, 0, dst_nritems); in balance_node_right()
3298 ret = tree_mod_log_eb_copy(root->fs_info, dst, src, 0, in balance_node_right()
3359 write_extent_buffer(c, root->fs_info->fsid, btrfs_header_fsid(), in insert_new_root()
3362 write_extent_buffer(c, root->fs_info->chunk_tree_uuid, in insert_new_root()
3413 tree_mod_log_eb_move(root->fs_info, lower, slot + 1, in insert_ptr()
3421 ret = tree_mod_log_insert_key(root->fs_info, lower, slot, in insert_ptr()
3496 write_extent_buffer(split, root->fs_info->fsid, in split_node()
3498 write_extent_buffer(split, root->fs_info->chunk_tree_uuid, in split_node()
3502 ret = tree_mod_log_eb_copy(root->fs_info, split, c, 0, in split_node()
3574 btrfs_crit(root->fs_info, in btrfs_leaf_free_space()
3696 clean_tree_block(trans, root->fs_info, left); in __push_leaf_right()
3708 clean_tree_block(trans, root->fs_info, path->nodes[0]); in __push_leaf_right()
3932 clean_tree_block(trans, root->fs_info, right); in __push_leaf_left()
3935 fixup_low_keys(root->fs_info, path, &disk_key, 1); in __push_leaf_left()
4172 struct btrfs_fs_info *fs_info = root->fs_info; in split_leaf() local
4276 write_extent_buffer(right, fs_info->fsid, in split_leaf()
4279 write_extent_buffer(right, fs_info->chunk_tree_uuid, in split_leaf()
4302 fixup_low_keys(fs_info, path, &disk_key, 1); in split_leaf()
4620 fixup_low_keys(root->fs_info, path, &disk_key, 1); in btrfs_truncate_item()
4666 btrfs_crit(root->fs_info, "slot %d too large, nritems %d", in btrfs_extend_item()
4721 fixup_low_keys(root->fs_info, path, &disk_key, 1); in setup_items_for_insert()
4735 btrfs_crit(root->fs_info, "not enough freespace need %u have %d", in setup_items_for_insert()
4745 btrfs_crit(root->fs_info, "slot %d old_data %d data_end %d", in setup_items_for_insert()
4870 tree_mod_log_eb_move(root->fs_info, parent, slot, in del_ptr()
4878 ret = tree_mod_log_insert_key(root->fs_info, parent, slot, in del_ptr()
4893 fixup_low_keys(root->fs_info, path, &disk_key, level + 1); in del_ptr()
4986 clean_tree_block(trans, root->fs_info, leaf); in btrfs_del_items()
4995 fixup_low_keys(root->fs_info, path, &disk_key, 1); in btrfs_del_items()
5406 down_read(&left_root->fs_info->commit_root_sem); in btrfs_compare_trees()
5416 up_read(&left_root->fs_info->commit_root_sem); in btrfs_compare_trees()