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()
173 ret = btrfs_init_log_root_tree(trans, root->fs_info); in start_log_trans()
179 ret = btrfs_add_log_tree(trans, root); in start_log_trans()
282 struct btrfs_trans_handle *trans; member
341 static noinline int overwrite_item(struct btrfs_trans_handle *trans, in overwrite_item() argument
457 ret = btrfs_insert_empty_item(trans, root, path, in overwrite_item()
540 trans->transid); in overwrite_item()
584 static noinline int replay_one_extent(struct btrfs_trans_handle *trans, in replay_one_extent() argument
633 ret = btrfs_lookup_file_extent(trans, root, path, btrfs_ino(inode), in replay_one_extent()
665 ret = btrfs_drop_extents(trans, root, inode, start, extent_end, 1); in replay_one_extent()
675 ret = btrfs_insert_empty_item(trans, root, path, key, in replay_one_extent()
700 ret = btrfs_inc_extent_ref(trans, root, in replay_one_extent()
711 ret = btrfs_alloc_logged_file_extent(trans, in replay_one_extent()
740 ret = btrfs_csum_file_blocks(trans, in replay_one_extent()
753 ret = overwrite_item(trans, root, path, eb, slot, key); in replay_one_extent()
759 ret = btrfs_update_inode(trans, root, inode); in replay_one_extent()
774 static noinline int drop_one_dir_item(struct btrfs_trans_handle *trans, in drop_one_dir_item() argument
804 ret = link_to_fixup_dir(trans, root, path, location.objectid); in drop_one_dir_item()
808 ret = btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in drop_one_dir_item()
812 ret = btrfs_run_delayed_items(trans, root); in drop_one_dir_item()
920 static inline int __add_inode_ref(struct btrfs_trans_handle *trans, in __add_inode_ref() argument
982 ret = btrfs_unlink_inode(trans, root, dir, in __add_inode_ref()
988 ret = btrfs_run_delayed_items(trans, root); in __add_inode_ref()
1052 ret = btrfs_unlink_inode(trans, root, in __add_inode_ref()
1059 trans, root); in __add_inode_ref()
1079 di = btrfs_lookup_dir_index_item(trans, root, path, btrfs_ino(dir), in __add_inode_ref()
1082 ret = drop_one_dir_item(trans, root, path, dir, di); in __add_inode_ref()
1089 di = btrfs_lookup_dir_item(trans, root, path, btrfs_ino(dir), in __add_inode_ref()
1092 ret = drop_one_dir_item(trans, root, path, dir, di); in __add_inode_ref()
1149 static noinline int add_inode_ref(struct btrfs_trans_handle *trans, in add_inode_ref() argument
1237 ret = __add_inode_ref(trans, root, path, log, in add_inode_ref()
1251 ret = btrfs_add_link(trans, dir, inode, name, namelen, in add_inode_ref()
1256 btrfs_update_inode(trans, root, inode); in add_inode_ref()
1269 ret = overwrite_item(trans, root, path, eb, slot, key); in add_inode_ref()
1278 static int insert_orphan_item(struct btrfs_trans_handle *trans, in insert_orphan_item() argument
1283 ret = btrfs_insert_orphan_item(trans, root, ino); in insert_orphan_item()
1401 static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans, in fixup_inode_link_count() argument
1430 btrfs_update_inode(trans, root, inode); in fixup_inode_link_count()
1436 ret = replay_dir_deletes(trans, root, NULL, path, in fixup_inode_link_count()
1441 ret = insert_orphan_item(trans, root, ino); in fixup_inode_link_count()
1449 static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans, in fixup_inode_link_counts() argument
1461 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in fixup_inode_link_counts()
1476 ret = btrfs_del_item(trans, root, path); in fixup_inode_link_counts()
1485 ret = fixup_inode_link_count(trans, root, inode); in fixup_inode_link_counts()
1509 static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans, in link_to_fixup_dir() argument
1526 ret = btrfs_insert_empty_item(trans, root, path, &key, 0); in link_to_fixup_dir()
1534 ret = btrfs_update_inode(trans, root, inode); in link_to_fixup_dir()
1550 static noinline int insert_one_name(struct btrfs_trans_handle *trans, in insert_one_name() argument
1571 ret = btrfs_add_link(trans, dir, inode, name, name_len, 1, index); in insert_one_name()
1617 static noinline int replay_one_name(struct btrfs_trans_handle *trans, in replay_one_name() argument
1651 exists = btrfs_lookup_inode(trans, root, path, &log_key, 0); in replay_one_name()
1659 dst_di = btrfs_lookup_dir_item(trans, root, path, key->objectid, in replay_one_name()
1662 dst_di = btrfs_lookup_dir_index_item(trans, root, path, in replay_one_name()
1697 ret = drop_one_dir_item(trans, root, path, dir, dst_di); in replay_one_name()
1707 ret = btrfs_update_inode(trans, root, dir); in replay_one_name()
1722 ret = insert_one_name(trans, root, path, key->objectid, key->offset, in replay_one_name()
1737 static noinline int replay_one_dir_item(struct btrfs_trans_handle *trans, in replay_one_dir_item() argument
1757 ret = replay_one_name(trans, root, path, eb, di, key); in replay_one_dir_item()
1854 static noinline int check_item_in_log(struct btrfs_trans_handle *trans, in check_item_in_log() argument
1898 log_di = btrfs_lookup_dir_item(trans, log, log_path, in check_item_in_log()
1902 log_di = btrfs_lookup_dir_index_item(trans, log, in check_item_in_log()
1918 ret = link_to_fixup_dir(trans, root, in check_item_in_log()
1927 ret = btrfs_unlink_inode(trans, root, dir, inode, in check_item_in_log()
1930 ret = btrfs_run_delayed_items(trans, root); in check_item_in_log()
1962 static int replay_xattr_deletes(struct btrfs_trans_handle *trans, in replay_xattr_deletes() argument
2023 di = btrfs_lookup_xattr(trans, root, path, ino, in replay_xattr_deletes()
2031 ret = btrfs_delete_one_dir_name(trans, root, in replay_xattr_deletes()
2070 static noinline int replay_dir_deletes(struct btrfs_trans_handle *trans, in replay_dir_deletes() argument
2136 ret = check_item_in_log(trans, root, log, path, in replay_dir_deletes()
2213 ret = replay_xattr_deletes(wc->trans, root, log, in replay_one_buffer()
2219 ret = replay_dir_deletes(wc->trans, in replay_one_buffer()
2224 ret = overwrite_item(wc->trans, root, path, in replay_one_buffer()
2234 ret = insert_orphan_item(wc->trans, root, in replay_one_buffer()
2240 ret = link_to_fixup_dir(wc->trans, root, in replay_one_buffer()
2248 ret = replay_one_dir_item(wc->trans, root, path, in replay_one_buffer()
2259 ret = overwrite_item(wc->trans, root, path, in replay_one_buffer()
2265 ret = add_inode_ref(wc->trans, root, log, path, in replay_one_buffer()
2271 ret = replay_one_extent(wc->trans, root, path, in replay_one_buffer()
2276 ret = replay_one_dir_item(wc->trans, root, path, in replay_one_buffer()
2286 static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, in walk_down_log_tree() argument
2340 if (trans) { in walk_down_log_tree()
2343 clean_tree_block(trans, root->fs_info, in walk_down_log_tree()
2384 static noinline int walk_up_log_tree(struct btrfs_trans_handle *trans, in walk_up_log_tree() argument
2419 if (trans) { in walk_up_log_tree()
2422 clean_tree_block(trans, root->fs_info, in walk_up_log_tree()
2448 static int walk_log_tree(struct btrfs_trans_handle *trans, in walk_log_tree() argument
2468 wret = walk_down_log_tree(trans, log, path, &level, wc); in walk_log_tree()
2476 wret = walk_up_log_tree(trans, log, path, &level, wc); in walk_log_tree()
2496 if (trans) { in walk_log_tree()
2499 clean_tree_block(trans, log->fs_info, next); in walk_log_tree()
2522 static int update_log_root(struct btrfs_trans_handle *trans, in update_log_root() argument
2529 ret = btrfs_insert_root(trans, log->fs_info->log_root_tree, in update_log_root()
2532 ret = btrfs_update_root(trans, log->fs_info->log_root_tree, in update_log_root()
2538 static void wait_log_commit(struct btrfs_trans_handle *trans, in wait_log_commit() argument
2564 static void wait_for_writer(struct btrfs_trans_handle *trans, in wait_for_writer() argument
2623 int btrfs_sync_log(struct btrfs_trans_handle *trans, in btrfs_sync_log() argument
2645 wait_log_commit(trans, root, log_transid); in btrfs_sync_log()
2654 wait_log_commit(trans, root, log_transid - 1); in btrfs_sync_log()
2665 wait_for_writer(trans, root); in btrfs_sync_log()
2671 if (btrfs_need_log_full_commit(root->fs_info, trans)) { in btrfs_sync_log()
2690 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2692 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2721 ret = update_log_root(trans, log); in btrfs_sync_log()
2735 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2738 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2761 btrfs_wait_logged_extents(trans, log, log_transid); in btrfs_sync_log()
2762 wait_log_commit(trans, log_root_tree, in btrfs_sync_log()
2773 wait_log_commit(trans, log_root_tree, in btrfs_sync_log()
2777 wait_for_writer(trans, log_root_tree); in btrfs_sync_log()
2783 if (btrfs_need_log_full_commit(root->fs_info, trans)) { in btrfs_sync_log()
2797 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2798 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2809 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2814 btrfs_wait_logged_extents(trans, log, log_transid); in btrfs_sync_log()
2831 ret = write_ctree_super(trans, root->fs_info->tree_root, 1); in btrfs_sync_log()
2833 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_sync_log()
2834 btrfs_abort_transaction(trans, root, ret); in btrfs_sync_log()
2871 static void free_log_tree(struct btrfs_trans_handle *trans, in free_log_tree() argument
2882 ret = walk_log_tree(trans, log, &wc); in free_log_tree()
2885 btrfs_abort_transaction(trans, log, ret); in free_log_tree()
2914 int btrfs_free_log(struct btrfs_trans_handle *trans, struct btrfs_root *root) in btrfs_free_log() argument
2917 free_log_tree(trans, root->log_root); in btrfs_free_log()
2923 int btrfs_free_log_root_tree(struct btrfs_trans_handle *trans, in btrfs_free_log_root_tree() argument
2927 free_log_tree(trans, fs_info->log_root_tree); in btrfs_free_log_root_tree()
2954 int btrfs_del_dir_entries_in_log(struct btrfs_trans_handle *trans, in btrfs_del_dir_entries_in_log() argument
2967 if (BTRFS_I(dir)->logged_trans < trans->transid) in btrfs_del_dir_entries_in_log()
2983 di = btrfs_lookup_dir_item(trans, log, path, dir_ino, in btrfs_del_dir_entries_in_log()
2990 ret = btrfs_delete_one_dir_name(trans, log, path, di); in btrfs_del_dir_entries_in_log()
2998 di = btrfs_lookup_dir_index_item(trans, log, path, dir_ino, in btrfs_del_dir_entries_in_log()
3005 ret = btrfs_delete_one_dir_name(trans, log, path, di); in btrfs_del_dir_entries_in_log()
3024 ret = btrfs_search_slot(trans, log, &key, path, 0, 1); in btrfs_del_dir_entries_in_log()
3051 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_del_dir_entries_in_log()
3054 btrfs_abort_transaction(trans, root, ret); in btrfs_del_dir_entries_in_log()
3062 int btrfs_del_inode_ref_in_log(struct btrfs_trans_handle *trans, in btrfs_del_inode_ref_in_log() argument
3071 if (BTRFS_I(inode)->logged_trans < trans->transid) in btrfs_del_inode_ref_in_log()
3080 ret = btrfs_del_inode_ref(trans, log, name, name_len, btrfs_ino(inode), in btrfs_del_inode_ref_in_log()
3084 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_del_inode_ref_in_log()
3087 btrfs_abort_transaction(trans, root, ret); in btrfs_del_inode_ref_in_log()
3098 static noinline int insert_dir_log_key(struct btrfs_trans_handle *trans, in insert_dir_log_key() argument
3114 ret = btrfs_insert_empty_item(trans, log, path, &key, sizeof(*item)); in insert_dir_log_key()
3131 static noinline int log_dir_items(struct btrfs_trans_handle *trans, in log_dir_items() argument
3155 ret = btrfs_search_forward(root, &min_key, path, trans->transid); in log_dir_items()
3195 ret = overwrite_item(trans, log, dst_path, in log_dir_items()
3226 ret = overwrite_item(trans, log, dst_path, src, i, in log_dir_items()
3259 (btrfs_dir_transid(src, di) == trans->transid || in log_dir_items()
3280 if (btrfs_header_generation(path->nodes[0]) != trans->transid) { in log_dir_items()
3281 ret = overwrite_item(trans, log, dst_path, in log_dir_items()
3301 ret = insert_dir_log_key(trans, log, path, key_type, in log_dir_items()
3321 static noinline int log_directory_changes(struct btrfs_trans_handle *trans, in log_directory_changes() argument
3336 ret = log_dir_items(trans, root, inode, path, in log_directory_changes()
3359 static int drop_objectid_items(struct btrfs_trans_handle *trans, in drop_objectid_items() argument
3374 ret = btrfs_search_slot(trans, log, &key, path, -1, 1); in drop_objectid_items()
3394 ret = btrfs_del_items(trans, log, path, start_slot, in drop_objectid_items()
3410 static void fill_inode_item(struct btrfs_trans_handle *trans, in fill_inode_item() argument
3459 btrfs_set_token_inode_transid(leaf, item, trans->transid, &token); in fill_inode_item()
3465 static int log_inode_item(struct btrfs_trans_handle *trans, in log_inode_item() argument
3472 ret = btrfs_insert_empty_item(trans, log, path, in log_inode_item()
3479 fill_inode_item(trans, path->nodes[0], inode_item, inode, 0, 0); in log_inode_item()
3484 static noinline int copy_items(struct btrfs_trans_handle *trans, in copy_items() argument
3525 ret = btrfs_insert_empty_items(trans, log, dst_path, in copy_items()
3545 fill_inode_item(trans, dst_path->nodes[0], inode_item, in copy_items()
3577 if (btrfs_file_extent_generation(src, extent) < trans->transid) in copy_items()
3627 ret = btrfs_csum_file_blocks(trans, log, sums); in copy_items()
3750 ret = btrfs_insert_file_extent(trans, log, btrfs_ino(inode), in copy_items()
3780 static int wait_ordered_extents(struct btrfs_trans_handle *trans, in wait_ordered_extents() argument
3891 ret = btrfs_csum_file_blocks(trans, log, sum); in wait_ordered_extents()
3921 ret = btrfs_csum_file_blocks(trans, log, sums); in wait_ordered_extents()
3929 static int log_one_extent(struct btrfs_trans_handle *trans, in log_one_extent() argument
3947 ret = wait_ordered_extents(trans, inode, root, em, logged_list, in log_one_extent()
3959 ret = __btrfs_drop_extents(trans, log, inode, path, em->start, in log_one_extent()
3970 ret = btrfs_insert_empty_item(trans, log, path, &key, in log_one_extent()
3979 btrfs_set_token_file_extent_generation(leaf, fi, trans->transid, in log_one_extent()
4023 static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans, in btrfs_log_changed_extents() argument
4086 ret = log_one_extent(trans, inode, root, em, path, logged_list, in btrfs_log_changed_extents()
4135 static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans, in btrfs_log_all_xattrs() argument
4164 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_all_xattrs()
4194 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_all_xattrs()
4230 static int btrfs_log_trailing_hole(struct btrfs_trans_handle *trans, in btrfs_log_trailing_hole() argument
4302 ret = btrfs_insert_file_extent(trans, log, ino, hole_start, 0, 0, in btrfs_log_trailing_hole()
4442 static int btrfs_log_inode(struct btrfs_trans_handle *trans, in btrfs_log_inode() argument
4502 ret = btrfs_commit_inode_delayed_items(trans, inode); in btrfs_log_inode()
4525 ret = drop_objectid_items(trans, log, path, ino, max_key_type); in btrfs_log_inode()
4550 ret = drop_objectid_items(trans, log, path, ino, in btrfs_log_inode()
4558 ret = btrfs_truncate_inode_items(trans, in btrfs_log_inode()
4570 ret = drop_objectid_items(trans, log, path, ino, in btrfs_log_inode()
4587 path, trans->transid); in btrfs_log_inode()
4602 BTRFS_I(inode)->generation == trans->transid) { in btrfs_log_inode()
4611 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_log_inode()
4620 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_inode()
4645 ret = copy_items(trans, inode, dst_path, path, &last_extent, in btrfs_log_inode()
4669 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_inode()
4691 ret = copy_items(trans, inode, dst_path, path, &last_extent, in btrfs_log_inode()
4704 err = btrfs_log_all_xattrs(trans, root, inode, path, dst_path); in btrfs_log_inode()
4710 err = btrfs_log_trailing_hole(trans, root, inode, path); in btrfs_log_inode()
4718 err = log_inode_item(trans, log, dst_path, inode); in btrfs_log_inode()
4738 ret = btrfs_log_changed_extents(trans, root, inode, dst_path, in btrfs_log_inode()
4777 ret = log_directory_changes(trans, root, inode, path, dst_path, in btrfs_log_inode()
4786 BTRFS_I(inode)->logged_trans = trans->transid; in btrfs_log_inode()
4807 static noinline int check_parent_dirs_for_sync(struct btrfs_trans_handle *trans, in check_parent_dirs_for_sync() argument
4843 BTRFS_I(inode)->logged_trans = trans->transid; in check_parent_dirs_for_sync()
4853 btrfs_set_log_full_commit(root->fs_info, trans); in check_parent_dirs_for_sync()
4922 static int log_new_dir_dentries(struct btrfs_trans_handle *trans, in log_new_dir_dentries() argument
4961 ret = btrfs_search_forward(log, &min_key, path, trans->transid); in log_new_dir_dentries()
4987 if (btrfs_dir_transid(leaf, di) < trans->transid && in log_new_dir_dentries()
5001 if (btrfs_inode_in_log(di_inode, trans->transid)) { in log_new_dir_dentries()
5010 ret = btrfs_log_inode(trans, root, di_inode, in log_new_dir_dentries()
5056 static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, in btrfs_log_inode_parent() argument
5098 ret = check_parent_dirs_for_sync(trans, inode, parent, in btrfs_log_inode_parent()
5103 if (btrfs_inode_in_log(inode, trans->transid)) { in btrfs_log_inode_parent()
5108 ret = start_log_trans(trans, root, ctx); in btrfs_log_inode_parent()
5112 ret = btrfs_log_inode(trans, root, inode, inode_only, start, end, ctx); in btrfs_log_inode_parent()
5156 ret = btrfs_log_inode(trans, root, inode, inode_only, in btrfs_log_inode_parent()
5169 ret = log_new_dir_dentries(trans, root, orig_inode, ctx); in btrfs_log_inode_parent()
5175 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_log_inode_parent()
5192 int btrfs_log_dentry_safe(struct btrfs_trans_handle *trans, in btrfs_log_dentry_safe() argument
5201 ret = btrfs_log_inode_parent(trans, root, d_inode(dentry), parent, in btrfs_log_dentry_safe()
5216 struct btrfs_trans_handle *trans; in btrfs_recover_log_trees() local
5233 trans = btrfs_start_transaction(fs_info->tree_root, 0); in btrfs_recover_log_trees()
5234 if (IS_ERR(trans)) { in btrfs_recover_log_trees()
5235 ret = PTR_ERR(trans); in btrfs_recover_log_trees()
5239 wc.trans = trans; in btrfs_recover_log_trees()
5242 ret = walk_log_tree(trans, log_root_tree, &wc); in btrfs_recover_log_trees()
5297 btrfs_record_root_in_trans(trans, wc.replay_dest); in btrfs_recover_log_trees()
5298 ret = walk_log_tree(trans, log, &wc); in btrfs_recover_log_trees()
5301 ret = fixup_inode_link_counts(trans, wc.replay_dest, in btrfs_recover_log_trees()
5335 ret = btrfs_commit_transaction(trans, fs_info->tree_root); in btrfs_recover_log_trees()
5346 if (wc.trans) in btrfs_recover_log_trees()
5347 btrfs_end_transaction(wc.trans, fs_info->tree_root); in btrfs_recover_log_trees()
5360 void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans, in btrfs_record_unlink_dir() argument
5375 BTRFS_I(inode)->last_unlink_trans = trans->transid; in btrfs_record_unlink_dir()
5382 if (BTRFS_I(dir)->logged_trans == trans->transid) in btrfs_record_unlink_dir()
5389 if (BTRFS_I(inode)->logged_trans == trans->transid) in btrfs_record_unlink_dir()
5406 BTRFS_I(dir)->last_unlink_trans = trans->transid; in btrfs_record_unlink_dir()
5416 int btrfs_log_new_name(struct btrfs_trans_handle *trans, in btrfs_log_new_name() argument
5427 BTRFS_I(inode)->last_unlink_trans = trans->transid; in btrfs_log_new_name()
5439 return btrfs_log_inode_parent(trans, root, inode, parent, 0, in btrfs_log_new_name()