Lines Matching refs:trans

96 static int btrfs_log_inode(struct btrfs_trans_handle *trans,
102 static int link_to_fixup_dir(struct btrfs_trans_handle *trans,
105 static noinline int replay_dir_deletes(struct btrfs_trans_handle *trans,
139 static int start_log_trans(struct btrfs_trans_handle *trans, in start_log_trans() argument
148 if (btrfs_need_log_full_commit(root->fs_info, trans)) { in start_log_trans()
162 ret = btrfs_init_log_root_tree(trans, root->fs_info); in start_log_trans()
167 ret = btrfs_add_log_tree(trans, root); in start_log_trans()
275 struct btrfs_trans_handle *trans; member
334 static noinline int overwrite_item(struct btrfs_trans_handle *trans, in overwrite_item() argument
450 ret = btrfs_insert_empty_item(trans, root, path, in overwrite_item()
533 trans->transid); in overwrite_item()
577 static noinline int replay_one_extent(struct btrfs_trans_handle *trans, in replay_one_extent() argument
626 ret = btrfs_lookup_file_extent(trans, root, path, btrfs_ino(inode), in replay_one_extent()
658 ret = btrfs_drop_extents(trans, root, inode, start, extent_end, 1); in replay_one_extent()
668 ret = btrfs_insert_empty_item(trans, root, path, key, in replay_one_extent()
693 ret = btrfs_inc_extent_ref(trans, root, in replay_one_extent()
704 ret = btrfs_alloc_logged_file_extent(trans, in replay_one_extent()
782 ret = btrfs_del_csums(trans, in replay_one_extent()
787 ret = btrfs_csum_file_blocks(trans, in replay_one_extent()
800 ret = overwrite_item(trans, root, path, eb, slot, key); in replay_one_extent()
806 ret = btrfs_update_inode(trans, root, inode); in replay_one_extent()
821 static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans, in drop_one_dir_item() argument
851 ret = link_to_fixup_dir(trans, root, path, location.objectid); in drop_one_dir_item()
855 ret = btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in drop_one_dir_item()
859 ret = btrfs_run_delayed_items(trans, root); in drop_one_dir_item()
967 static inline int __add_inode_ref(struct btrfs_trans_handle *trans, in __add_inode_ref() argument
1029 ret = btrfs_unlink_inode(trans, root, dir, in __add_inode_ref()
1035 ret = btrfs_run_delayed_items(trans, root); in __add_inode_ref()
1099 ret = btrfs_unlink_inode(trans, root, in __add_inode_ref()
1106 trans, root); in __add_inode_ref()
1126 di = btrfs_lookup_dir_index_item(trans, root, path, btrfs_ino(dir), in __add_inode_ref()
1129 ret = drop_one_dir_item(trans, root, path, dir, di); in __add_inode_ref()
1136 di = btrfs_lookup_dir_item(trans, root, path, btrfs_ino(dir), in __add_inode_ref()
1139 ret = drop_one_dir_item(trans, root, path, dir, di); in __add_inode_ref()
1196 static noinline int add_inode_ref(struct btrfs_trans_handle *trans, in add_inode_ref() argument
1284 ret = __add_inode_ref(trans, root, path, log, in add_inode_ref()
1298 ret = btrfs_add_link(trans, dir, inode, name, namelen, in add_inode_ref()
1303 btrfs_update_inode(trans, root, inode); in add_inode_ref()
1316 ret = overwrite_item(trans, root, path, eb, slot, key); in add_inode_ref()
1325 static int insert_orphan_item(struct btrfs_trans_handle *trans, in insert_orphan_item() argument
1330 ret = btrfs_insert_orphan_item(trans, root, ino); in insert_orphan_item()
1448 static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans, in fixup_inode_link_count() argument
1477 btrfs_update_inode(trans, root, inode); in fixup_inode_link_count()
1483 ret = replay_dir_deletes(trans, root, NULL, path, in fixup_inode_link_count()
1488 ret = insert_orphan_item(trans, root, ino); in fixup_inode_link_count()
1496 static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans, in fixup_inode_link_counts() argument
1508 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in fixup_inode_link_counts()
1523 ret = btrfs_del_item(trans, root, path); in fixup_inode_link_counts()
1532 ret = fixup_inode_link_count(trans, root, inode); in fixup_inode_link_counts()
1556 static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans, in link_to_fixup_dir() argument
1573 ret = btrfs_insert_empty_item(trans, root, path, &key, 0); in link_to_fixup_dir()
1581 ret = btrfs_update_inode(trans, root, inode); in link_to_fixup_dir()
1597 static noinline int insert_one_name(struct btrfs_trans_handle *trans, in insert_one_name() argument
1617 ret = btrfs_add_link(trans, dir, inode, name, name_len, 1, index); in insert_one_name()
1666 static noinline int replay_one_name(struct btrfs_trans_handle *trans, in replay_one_name() argument
1701 exists = btrfs_lookup_inode(trans, root, path, &log_key, 0); in replay_one_name()
1709 dst_di = btrfs_lookup_dir_item(trans, root, path, key->objectid, in replay_one_name()
1712 dst_di = btrfs_lookup_dir_index_item(trans, root, path, in replay_one_name()
1747 ret = drop_one_dir_item(trans, root, path, dir, dst_di); in replay_one_name()
1757 ret = btrfs_update_inode(trans, root, dir); in replay_one_name()
1774 ret = insert_one_name(trans, root, key->objectid, key->offset, in replay_one_name()
1791 static noinline int replay_one_dir_item(struct btrfs_trans_handle *trans, in replay_one_dir_item() argument
1812 ret = replay_one_name(trans, root, path, eb, di, key); in replay_one_dir_item()
1857 ret = link_to_fixup_dir(trans, root, fixup_path, in replay_one_dir_item()
1956 static noinline int check_item_in_log(struct btrfs_trans_handle *trans, in check_item_in_log() argument
2000 log_di = btrfs_lookup_dir_item(trans, log, log_path, in check_item_in_log()
2004 log_di = btrfs_lookup_dir_index_item(trans, log, in check_item_in_log()
2020 ret = link_to_fixup_dir(trans, root, in check_item_in_log()
2029 ret = btrfs_unlink_inode(trans, root, dir, inode, in check_item_in_log()
2032 ret = btrfs_run_delayed_items(trans, root); in check_item_in_log()
2064 static int replay_xattr_deletes(struct btrfs_trans_handle *trans, in replay_xattr_deletes() argument
2125 di = btrfs_lookup_xattr(trans, root, path, ino, in replay_xattr_deletes()
2133 ret = btrfs_delete_one_dir_name(trans, root, in replay_xattr_deletes()
2172 static noinline int replay_dir_deletes(struct btrfs_trans_handle *trans, in replay_dir_deletes() argument
2238 ret = check_item_in_log(trans, root, log, path, in replay_dir_deletes()
2315 ret = replay_xattr_deletes(wc->trans, root, log, in replay_one_buffer()
2321 ret = replay_dir_deletes(wc->trans, in replay_one_buffer()
2326 ret = overwrite_item(wc->trans, root, path, in replay_one_buffer()
2336 ret = insert_orphan_item(wc->trans, root, in replay_one_buffer()
2342 ret = link_to_fixup_dir(wc->trans, root, in replay_one_buffer()
2350 ret = replay_one_dir_item(wc->trans, root, path, in replay_one_buffer()
2361 ret = overwrite_item(wc->trans, root, path, in replay_one_buffer()
2367 ret = add_inode_ref(wc->trans, root, log, path, in replay_one_buffer()
2373 ret = replay_one_extent(wc->trans, root, path, in replay_one_buffer()
2378 ret = replay_one_dir_item(wc->trans, root, path, in replay_one_buffer()
2388 static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, in walk_down_log_tree() argument
2442 if (trans) { in walk_down_log_tree()
2445 clean_tree_block(trans, root->fs_info, in walk_down_log_tree()
2486 static noinline int walk_up_log_tree(struct btrfs_trans_handle *trans, in walk_up_log_tree() argument
2521 if (trans) { in walk_up_log_tree()
2524 clean_tree_block(trans, root->fs_info, in walk_up_log_tree()
2550 static int walk_log_tree(struct btrfs_trans_handle *trans, in walk_log_tree() argument
2570 wret = walk_down_log_tree(trans, log, path, &level, wc); in walk_log_tree()
2578 wret = walk_up_log_tree(trans, log, path, &level, wc); in walk_log_tree()
2598 if (trans) { in walk_log_tree()
2601 clean_tree_block(trans, log->fs_info, next); in walk_log_tree()
2624 static int update_log_root(struct btrfs_trans_handle *trans, in update_log_root() argument
2631 ret = btrfs_insert_root(trans, log->fs_info->log_root_tree, in update_log_root()
2634 ret = btrfs_update_root(trans, log->fs_info->log_root_tree, in update_log_root()
2723 int btrfs_sync_log(struct btrfs_trans_handle *trans, in btrfs_sync_log() argument
2771 if (btrfs_need_log_full_commit(root->fs_info, trans)) { in btrfs_sync_log()
2790 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2792 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2821 ret = update_log_root(trans, log); in btrfs_sync_log()
2837 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2840 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2863 btrfs_wait_logged_extents(trans, log, log_transid); in btrfs_sync_log()
2885 if (btrfs_need_log_full_commit(root->fs_info, trans)) { in btrfs_sync_log()
2899 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2900 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2911 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2916 btrfs_wait_logged_extents(trans, log, log_transid); in btrfs_sync_log()
2933 ret = write_ctree_super(trans, root->fs_info->tree_root, 1); in btrfs_sync_log()
2935 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2936 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2979 static void free_log_tree(struct btrfs_trans_handle *trans, in free_log_tree() argument
2990 ret = walk_log_tree(trans, log, &wc); in free_log_tree()
2993 btrfs_abort_transaction(trans, log, ret); in free_log_tree()
3022 int btrfs_free_log(struct btrfs_trans_handle *trans, struct btrfs_root *root) in btrfs_free_log() argument
3025 free_log_tree(trans, root->log_root); in btrfs_free_log()
3031 int btrfs_free_log_root_tree(struct btrfs_trans_handle *trans, in btrfs_free_log_root_tree() argument
3035 free_log_tree(trans, fs_info->log_root_tree); in btrfs_free_log_root_tree()
3062 int btrfs_del_dir_entries_in_log(struct btrfs_trans_handle *trans, in btrfs_del_dir_entries_in_log() argument
3075 if (BTRFS_I(dir)->logged_trans < trans->transid) in btrfs_del_dir_entries_in_log()
3091 di = btrfs_lookup_dir_item(trans, log, path, dir_ino, in btrfs_del_dir_entries_in_log()
3098 ret = btrfs_delete_one_dir_name(trans, log, path, di); in btrfs_del_dir_entries_in_log()
3106 di = btrfs_lookup_dir_index_item(trans, log, path, dir_ino, in btrfs_del_dir_entries_in_log()
3113 ret = btrfs_delete_one_dir_name(trans, log, path, di); in btrfs_del_dir_entries_in_log()
3132 ret = btrfs_search_slot(trans, log, &key, path, 0, 1); in btrfs_del_dir_entries_in_log()
3159 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_del_dir_entries_in_log()
3162 btrfs_abort_transaction(trans, root, ret); in btrfs_del_dir_entries_in_log()
3170 int btrfs_del_inode_ref_in_log(struct btrfs_trans_handle *trans, in btrfs_del_inode_ref_in_log() argument
3179 if (BTRFS_I(inode)->logged_trans < trans->transid) in btrfs_del_inode_ref_in_log()
3188 ret = btrfs_del_inode_ref(trans, log, name, name_len, btrfs_ino(inode), in btrfs_del_inode_ref_in_log()
3192 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_del_inode_ref_in_log()
3195 btrfs_abort_transaction(trans, root, ret); in btrfs_del_inode_ref_in_log()
3206 static noinline int insert_dir_log_key(struct btrfs_trans_handle *trans, in insert_dir_log_key() argument
3222 ret = btrfs_insert_empty_item(trans, log, path, &key, sizeof(*item)); in insert_dir_log_key()
3239 static noinline int log_dir_items(struct btrfs_trans_handle *trans, in log_dir_items() argument
3263 ret = btrfs_search_forward(root, &min_key, path, trans->transid); in log_dir_items()
3303 ret = overwrite_item(trans, log, dst_path, in log_dir_items()
3334 ret = overwrite_item(trans, log, dst_path, src, i, in log_dir_items()
3367 (btrfs_dir_transid(src, di) == trans->transid || in log_dir_items()
3388 if (btrfs_header_generation(path->nodes[0]) != trans->transid) { in log_dir_items()
3389 ret = overwrite_item(trans, log, dst_path, in log_dir_items()
3409 ret = insert_dir_log_key(trans, log, path, key_type, in log_dir_items()
3429 static noinline int log_directory_changes(struct btrfs_trans_handle *trans, in log_directory_changes() argument
3444 ret = log_dir_items(trans, root, inode, path, in log_directory_changes()
3467 static int drop_objectid_items(struct btrfs_trans_handle *trans, in drop_objectid_items() argument
3482 ret = btrfs_search_slot(trans, log, &key, path, -1, 1); in drop_objectid_items()
3502 ret = btrfs_del_items(trans, log, path, start_slot, in drop_objectid_items()
3518 static void fill_inode_item(struct btrfs_trans_handle *trans, in fill_inode_item() argument
3567 btrfs_set_token_inode_transid(leaf, item, trans->transid, &token); in fill_inode_item()
3573 static int log_inode_item(struct btrfs_trans_handle *trans, in log_inode_item() argument
3580 ret = btrfs_insert_empty_item(trans, log, path, in log_inode_item()
3587 fill_inode_item(trans, path->nodes[0], inode_item, inode, 0, 0); in log_inode_item()
3592 static noinline int copy_items(struct btrfs_trans_handle *trans, in copy_items() argument
3633 ret = btrfs_insert_empty_items(trans, log, dst_path, in copy_items()
3653 fill_inode_item(trans, dst_path->nodes[0], inode_item, in copy_items()
3685 if (btrfs_file_extent_generation(src, extent) < trans->transid) in copy_items()
3735 ret = btrfs_csum_file_blocks(trans, log, sums); in copy_items()
3858 ret = btrfs_insert_file_extent(trans, log, btrfs_ino(inode), in copy_items()
3888 static int wait_ordered_extents(struct btrfs_trans_handle *trans, in wait_ordered_extents() argument
3993 ret = btrfs_csum_file_blocks(trans, log, sum); in wait_ordered_extents()
4023 ret = btrfs_csum_file_blocks(trans, log, sums); in wait_ordered_extents()
4031 static int log_one_extent(struct btrfs_trans_handle *trans, in log_one_extent() argument
4049 ret = wait_ordered_extents(trans, inode, root, em, logged_list, in log_one_extent()
4061 ret = __btrfs_drop_extents(trans, log, inode, path, em->start, in log_one_extent()
4072 ret = btrfs_insert_empty_item(trans, log, path, &key, in log_one_extent()
4081 btrfs_set_token_file_extent_generation(leaf, fi, trans->transid, in log_one_extent()
4125 static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans, in btrfs_log_changed_extents() argument
4188 ret = log_one_extent(trans, inode, root, em, path, logged_list, in btrfs_log_changed_extents()
4237 static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans, in btrfs_log_all_xattrs() argument
4266 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_all_xattrs()
4296 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_all_xattrs()
4332 static int btrfs_log_trailing_hole(struct btrfs_trans_handle *trans, in btrfs_log_trailing_hole() argument
4404 ret = btrfs_insert_file_extent(trans, log, ino, hole_start, 0, 0, in btrfs_log_trailing_hole()
4544 static int btrfs_log_inode(struct btrfs_trans_handle *trans, in btrfs_log_inode() argument
4604 ret = btrfs_commit_inode_delayed_items(trans, inode); in btrfs_log_inode()
4627 ret = drop_objectid_items(trans, log, path, ino, max_key_type); in btrfs_log_inode()
4652 ret = drop_objectid_items(trans, log, path, ino, in btrfs_log_inode()
4660 ret = btrfs_truncate_inode_items(trans, in btrfs_log_inode()
4672 ret = drop_objectid_items(trans, log, path, ino, in btrfs_log_inode()
4689 path, trans->transid); in btrfs_log_inode()
4704 BTRFS_I(inode)->generation == trans->transid) { in btrfs_log_inode()
4713 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_log_inode()
4722 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_inode()
4747 ret = copy_items(trans, inode, dst_path, path, &last_extent, in btrfs_log_inode()
4771 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_inode()
4793 ret = copy_items(trans, inode, dst_path, path, &last_extent, in btrfs_log_inode()
4806 err = btrfs_log_all_xattrs(trans, root, inode, path, dst_path); in btrfs_log_inode()
4812 err = btrfs_log_trailing_hole(trans, root, inode, path); in btrfs_log_inode()
4820 err = log_inode_item(trans, log, dst_path, inode); in btrfs_log_inode()
4840 ret = btrfs_log_changed_extents(trans, root, inode, dst_path, in btrfs_log_inode()
4879 ret = log_directory_changes(trans, root, inode, path, dst_path, in btrfs_log_inode()
4888 BTRFS_I(inode)->logged_trans = trans->transid; in btrfs_log_inode()
4909 static noinline int check_parent_dirs_for_sync(struct btrfs_trans_handle *trans, in check_parent_dirs_for_sync() argument
4945 BTRFS_I(inode)->logged_trans = trans->transid; in check_parent_dirs_for_sync()
4955 btrfs_set_log_full_commit(root->fs_info, trans); in check_parent_dirs_for_sync()
5024 static int log_new_dir_dentries(struct btrfs_trans_handle *trans, in log_new_dir_dentries() argument
5063 ret = btrfs_search_forward(log, &min_key, path, trans->transid); in log_new_dir_dentries()
5089 if (btrfs_dir_transid(leaf, di) < trans->transid && in log_new_dir_dentries()
5103 if (btrfs_inode_in_log(di_inode, trans->transid)) { in log_new_dir_dentries()
5112 ret = btrfs_log_inode(trans, root, di_inode, in log_new_dir_dentries()
5152 static int btrfs_log_all_parents(struct btrfs_trans_handle *trans, in btrfs_log_all_parents() argument
5226 ret = btrfs_log_inode(trans, root, dir_inode, in btrfs_log_all_parents()
5246 static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, in btrfs_log_inode_parent() argument
5285 ret = check_parent_dirs_for_sync(trans, inode, parent, in btrfs_log_inode_parent()
5290 if (btrfs_inode_in_log(inode, trans->transid)) { in btrfs_log_inode_parent()
5295 ret = start_log_trans(trans, root, ctx); in btrfs_log_inode_parent()
5299 ret = btrfs_log_inode(trans, root, inode, inode_only, start, end, ctx); in btrfs_log_inode_parent()
5361 ret = btrfs_log_all_parents(trans, orig_inode, ctx); in btrfs_log_inode_parent()
5375 ret = btrfs_log_inode(trans, root, inode, in btrfs_log_inode_parent()
5389 ret = log_new_dir_dentries(trans, root, orig_inode, ctx); in btrfs_log_inode_parent()
5395 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_log_inode_parent()
5412 int btrfs_log_dentry_safe(struct btrfs_trans_handle *trans, in btrfs_log_dentry_safe() argument
5421 ret = btrfs_log_inode_parent(trans, root, d_inode(dentry), parent, in btrfs_log_dentry_safe()
5436 struct btrfs_trans_handle *trans; in btrfs_recover_log_trees() local
5453 trans = btrfs_start_transaction(fs_info->tree_root, 0); in btrfs_recover_log_trees()
5454 if (IS_ERR(trans)) { in btrfs_recover_log_trees()
5455 ret = PTR_ERR(trans); in btrfs_recover_log_trees()
5459 wc.trans = trans; in btrfs_recover_log_trees()
5462 ret = walk_log_tree(trans, log_root_tree, &wc); in btrfs_recover_log_trees()
5517 btrfs_record_root_in_trans(trans, wc.replay_dest); in btrfs_recover_log_trees()
5518 ret = walk_log_tree(trans, log, &wc); in btrfs_recover_log_trees()
5521 ret = fixup_inode_link_counts(trans, wc.replay_dest, in btrfs_recover_log_trees()
5555 ret = btrfs_commit_transaction(trans, fs_info->tree_root); in btrfs_recover_log_trees()
5566 if (wc.trans) in btrfs_recover_log_trees()
5567 btrfs_end_transaction(wc.trans, fs_info->tree_root); in btrfs_recover_log_trees()
5580 void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans, in btrfs_record_unlink_dir() argument
5595 BTRFS_I(inode)->last_unlink_trans = trans->transid; in btrfs_record_unlink_dir()
5602 if (BTRFS_I(dir)->logged_trans == trans->transid) in btrfs_record_unlink_dir()
5609 if (BTRFS_I(inode)->logged_trans == trans->transid) in btrfs_record_unlink_dir()
5626 BTRFS_I(dir)->last_unlink_trans = trans->transid; in btrfs_record_unlink_dir()
5636 int btrfs_log_new_name(struct btrfs_trans_handle *trans, in btrfs_log_new_name() argument
5647 BTRFS_I(inode)->last_unlink_trans = trans->transid; in btrfs_log_new_name()
5659 return btrfs_log_inode_parent(trans, root, inode, parent, 0, in btrfs_log_new_name()