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, NULL); 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()
1191 tree_mod_log_insert_key(root->fs_info, parent, parent_slot, in __btrfs_cow_block()
1199 ret = tree_mod_log_free_eb(root->fs_info, buf); in __btrfs_cow_block()
1221 __tree_mod_log_oldest_root(struct btrfs_fs_info *fs_info, in __tree_mod_log_oldest_root() argument
1238 tm = tree_mod_log_search_oldest(fs_info, root_logical, in __tree_mod_log_oldest_root()
1276 __tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct extent_buffer *eb, in __tree_mod_log_rewind() argument
1287 tree_mod_log_read_lock(fs_info); in __tree_mod_log_rewind()
1342 tree_mod_log_read_unlock(fs_info); in __tree_mod_log_rewind()
1354 tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct btrfs_path *path, in tree_mod_log_rewind() argument
1366 tm = tree_mod_log_search(fs_info, eb->start, time_seq); in tree_mod_log_rewind()
1375 eb_rewin = alloc_dummy_extent_buffer(fs_info, eb->start); in tree_mod_log_rewind()
1401 __tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm); in tree_mod_log_rewind()
1403 BTRFS_NODEPTRS_PER_BLOCK(fs_info->tree_root)); in tree_mod_log_rewind()
1427 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in get_old_root()
1439 tm = tree_mod_log_search(root->fs_info, logical, time_seq); in get_old_root()
1447 btrfs_warn(root->fs_info, in get_old_root()
1456 eb = alloc_dummy_extent_buffer(root->fs_info, logical); in get_old_root()
1476 __tree_mod_log_rewind(root->fs_info, eb, time_seq, tm); in get_old_root()
1490 tm = __tree_mod_log_oldest_root(root->fs_info, eb_root, time_seq); in btrfs_old_root_level()
1544 if (trans->transaction != root->fs_info->running_transaction) in btrfs_cow_block()
1547 root->fs_info->running_transaction->transid); in btrfs_cow_block()
1549 if (trans->transid != root->fs_info->generation) in btrfs_cow_block()
1551 trans->transid, root->fs_info->generation); in btrfs_cow_block()
1645 WARN_ON(trans->transaction != root->fs_info->running_transaction); in btrfs_realloc_node()
1646 WARN_ON(trans->transid != root->fs_info->generation); in btrfs_realloc_node()
1683 cur = btrfs_find_tree_block(root->fs_info, blocknr); in btrfs_realloc_node()
1930 btrfs_std_error(root->fs_info, ret, NULL); in balance_level()
1951 clean_tree_block(trans, root->fs_info, mid); in balance_level()
2005 clean_tree_block(trans, root->fs_info, right); in balance_level()
2015 tree_mod_log_set_node_key(root->fs_info, parent, in balance_level()
2033 btrfs_std_error(root->fs_info, ret, NULL); in balance_level()
2049 clean_tree_block(trans, root->fs_info, mid); in balance_level()
2060 tree_mod_log_set_node_key(root->fs_info, parent, in balance_level()
2159 tree_mod_log_set_node_key(root->fs_info, parent, in push_nodes_for_insert()
2212 tree_mod_log_set_node_key(root->fs_info, parent, in push_nodes_for_insert()
2267 eb = btrfs_find_tree_block(root->fs_info, search); in reada_for_search()
2327 eb = btrfs_find_tree_block(root->fs_info, block1); in reada_for_balance()
2340 eb = btrfs_find_tree_block(root->fs_info, block2); in reada_for_balance()
2458 tmp = btrfs_find_tree_block(root->fs_info, blocknr); in read_block_for_search()
2729 down_read(&root->fs_info->commit_root_sem); in btrfs_search_slot()
2734 up_read(&root->fs_info->commit_root_sem); in btrfs_search_slot()
3027 b = tree_mod_log_rewind(root->fs_info, p, b, time_seq); in btrfs_search_old_slot()
3134 static void fixup_low_keys(struct btrfs_fs_info *fs_info, in fixup_low_keys() argument
3146 tree_mod_log_set_node_key(fs_info, t, tslot, 1); in fixup_low_keys()
3160 void btrfs_set_item_key_safe(struct btrfs_fs_info *fs_info, in btrfs_set_item_key_safe() argument
3183 fixup_low_keys(fs_info, path, &disk_key, 1); in btrfs_set_item_key_safe()
3229 ret = tree_mod_log_eb_copy(root->fs_info, dst, src, dst_nritems, 0, in push_node_left()
3298 tree_mod_log_eb_move(root->fs_info, dst, push_items, 0, dst_nritems); in balance_node_right()
3304 ret = tree_mod_log_eb_copy(root->fs_info, dst, src, 0, in balance_node_right()
3365 write_extent_buffer(c, root->fs_info->fsid, btrfs_header_fsid(), in insert_new_root()
3368 write_extent_buffer(c, root->fs_info->chunk_tree_uuid, in insert_new_root()
3419 tree_mod_log_eb_move(root->fs_info, lower, slot + 1, in insert_ptr()
3427 ret = tree_mod_log_insert_key(root->fs_info, lower, slot, in insert_ptr()
3502 write_extent_buffer(split, root->fs_info->fsid, in split_node()
3504 write_extent_buffer(split, root->fs_info->chunk_tree_uuid, in split_node()
3508 ret = tree_mod_log_eb_copy(root->fs_info, split, c, 0, in split_node()
3580 btrfs_crit(root->fs_info, in btrfs_leaf_free_space()
3702 clean_tree_block(trans, root->fs_info, left); in __push_leaf_right()
3714 clean_tree_block(trans, root->fs_info, path->nodes[0]); in __push_leaf_right()
3938 clean_tree_block(trans, root->fs_info, right); in __push_leaf_left()
3941 fixup_low_keys(root->fs_info, path, &disk_key, 1); in __push_leaf_left()
4178 struct btrfs_fs_info *fs_info = root->fs_info; in split_leaf() local
4282 write_extent_buffer(right, fs_info->fsid, in split_leaf()
4285 write_extent_buffer(right, fs_info->chunk_tree_uuid, in split_leaf()
4308 fixup_low_keys(fs_info, path, &disk_key, 1); in split_leaf()
4626 fixup_low_keys(root->fs_info, path, &disk_key, 1); in btrfs_truncate_item()
4672 btrfs_crit(root->fs_info, "slot %d too large, nritems %d", in btrfs_extend_item()
4727 fixup_low_keys(root->fs_info, path, &disk_key, 1); in setup_items_for_insert()
4741 btrfs_crit(root->fs_info, "not enough freespace need %u have %d", in setup_items_for_insert()
4751 btrfs_crit(root->fs_info, "slot %d old_data %d data_end %d", in setup_items_for_insert()
4876 tree_mod_log_eb_move(root->fs_info, parent, slot, in del_ptr()
4884 ret = tree_mod_log_insert_key(root->fs_info, parent, slot, in del_ptr()
4899 fixup_low_keys(root->fs_info, path, &disk_key, level + 1); in del_ptr()
4992 clean_tree_block(trans, root->fs_info, leaf); in btrfs_del_items()
5001 fixup_low_keys(root->fs_info, path, &disk_key, 1); in btrfs_del_items()
5412 down_read(&left_root->fs_info->commit_root_sem); in btrfs_compare_trees()
5422 up_read(&left_root->fs_info->commit_root_sem); in btrfs_compare_trees()