Lines Matching defs:trans

608 static int add_qgroup_relation_item(struct btrfs_trans_handle *trans, u64 src,
612 struct btrfs_root *quota_root = trans->fs_info->quota_root;
624 ret = btrfs_insert_empty_item(trans, quota_root, path, &key, 0);
626 btrfs_mark_buffer_dirty(trans, path->nodes[0]);
632 static int del_qgroup_relation_item(struct btrfs_trans_handle *trans, u64 src,
636 struct btrfs_root *quota_root = trans->fs_info->quota_root;
648 ret = btrfs_search_slot(trans, quota_root, &key, path, -1, 1);
657 ret = btrfs_del_item(trans, quota_root, path);
663 static int add_qgroup_item(struct btrfs_trans_handle *trans,
690 ret = btrfs_insert_empty_item(trans, quota_root, path, &key,
698 btrfs_set_qgroup_info_generation(leaf, qgroup_info, trans->transid);
704 btrfs_mark_buffer_dirty(trans, leaf);
709 ret = btrfs_insert_empty_item(trans, quota_root, path, &key,
723 btrfs_mark_buffer_dirty(trans, leaf);
731 static int del_qgroup_item(struct btrfs_trans_handle *trans, u64 qgroupid)
734 struct btrfs_root *quota_root = trans->fs_info->quota_root;
745 ret = btrfs_search_slot(trans, quota_root, &key, path, -1, 1);
754 ret = btrfs_del_item(trans, quota_root, path);
761 ret = btrfs_search_slot(trans, quota_root, &key, path, -1, 1);
770 ret = btrfs_del_item(trans, quota_root, path);
777 static int update_qgroup_limit_item(struct btrfs_trans_handle *trans,
780 struct btrfs_root *quota_root = trans->fs_info->quota_root;
796 ret = btrfs_search_slot(trans, quota_root, &key, path, 0, 1);
812 btrfs_mark_buffer_dirty(trans, l);
819 static int update_qgroup_info_item(struct btrfs_trans_handle *trans,
822 struct btrfs_fs_info *fs_info = trans->fs_info;
842 ret = btrfs_search_slot(trans, quota_root, &key, path, 0, 1);
852 btrfs_set_qgroup_info_generation(l, qgroup_info, trans->transid);
858 btrfs_mark_buffer_dirty(trans, l);
865 static int update_qgroup_status_item(struct btrfs_trans_handle *trans)
867 struct btrfs_fs_info *fs_info = trans->fs_info;
884 ret = btrfs_search_slot(trans, quota_root, &key, path, 0, 1);
896 btrfs_set_qgroup_status_generation(l, ptr, trans->transid);
900 btrfs_mark_buffer_dirty(trans, l);
910 static int btrfs_clean_quota_tree(struct btrfs_trans_handle *trans,
928 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
941 ret = btrfs_del_items(trans, root, path, 0, nr);
963 struct btrfs_trans_handle *trans = NULL;
1019 trans = btrfs_start_transaction(tree_root, 2);
1022 if (IS_ERR(trans)) {
1023 ret = PTR_ERR(trans);
1024 trans = NULL;
1037 quota_root = btrfs_create_tree(trans, BTRFS_QUOTA_TREE_OBJECTID);
1040 btrfs_abort_transaction(trans, ret);
1047 btrfs_abort_transaction(trans, ret);
1055 ret = btrfs_insert_empty_item(trans, quota_root, path, &key,
1058 btrfs_abort_transaction(trans, ret);
1065 btrfs_set_qgroup_status_generation(leaf, ptr, trans->transid);
1073 btrfs_mark_buffer_dirty(trans, leaf);
1084 btrfs_abort_transaction(trans, ret);
1098 ret = add_qgroup_item(trans, quota_root,
1101 btrfs_abort_transaction(trans, ret);
1108 btrfs_abort_transaction(trans, ret);
1113 btrfs_abort_transaction(trans, ret);
1119 btrfs_abort_transaction(trans, ret);
1133 btrfs_abort_transaction(trans, ret);
1142 ret = add_qgroup_item(trans, quota_root, BTRFS_FS_TREE_OBJECTID);
1144 btrfs_abort_transaction(trans, ret);
1151 btrfs_abort_transaction(trans, ret);
1156 btrfs_abort_transaction(trans, ret);
1170 ret = btrfs_commit_transaction(trans);
1171 trans = NULL;
1221 if (ret && trans)
1222 btrfs_end_transaction(trans);
1223 else if (trans)
1224 ret = btrfs_end_transaction(trans);
1232 struct btrfs_trans_handle *trans = NULL;
1282 trans = btrfs_start_transaction(fs_info->tree_root, 1);
1285 if (IS_ERR(trans)) {
1286 ret = PTR_ERR(trans);
1287 trans = NULL;
1304 ret = btrfs_clean_quota_tree(trans, quota_root);
1306 btrfs_abort_transaction(trans, ret);
1310 ret = btrfs_del_root(trans, &quota_root->root_key);
1312 btrfs_abort_transaction(trans, ret);
1321 btrfs_clear_buffer_dirty(trans, quota_root->node);
1323 btrfs_free_tree_block(trans, btrfs_root_id(quota_root),
1330 if (ret && trans)
1331 btrfs_end_transaction(trans);
1332 else if (trans)
1333 ret = btrfs_end_transaction(trans);
1481 int btrfs_add_qgroup_relation(struct btrfs_trans_handle *trans, u64 src,
1484 struct btrfs_fs_info *fs_info = trans->fs_info;
1523 ret = add_qgroup_relation_item(trans, src, dst);
1527 ret = add_qgroup_relation_item(trans, dst, src);
1529 del_qgroup_relation_item(trans, src, dst);
1547 static int __del_qgroup_relation(struct btrfs_trans_handle *trans, u64 src,
1550 struct btrfs_fs_info *fs_info = trans->fs_info;
1590 ret = del_qgroup_relation_item(trans, src, dst);
1593 ret2 = del_qgroup_relation_item(trans, dst, src);
1612 int btrfs_del_qgroup_relation(struct btrfs_trans_handle *trans, u64 src,
1615 struct btrfs_fs_info *fs_info = trans->fs_info;
1619 ret = __del_qgroup_relation(trans, src, dst);
1625 int btrfs_create_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid)
1627 struct btrfs_fs_info *fs_info = trans->fs_info;
1644 ret = add_qgroup_item(trans, quota_root, qgroupid);
1671 int btrfs_remove_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid)
1673 struct btrfs_fs_info *fs_info = trans->fs_info;
1701 ret = del_qgroup_item(trans, qgroupid);
1708 ret = __del_qgroup_relation(trans, qgroupid,
1730 int btrfs_limit_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid,
1733 struct btrfs_fs_info *fs_info = trans->fs_info;
1795 ret = update_qgroup_limit_item(trans, qgroup);
1842 int btrfs_qgroup_trace_extent_post(struct btrfs_trans_handle *trans,
1867 ASSERT(trans != NULL);
1869 if (trans->fs_info->qgroup_flags & BTRFS_QGROUP_RUNTIME_FLAG_NO_ACCOUNTING)
1873 ctx.fs_info = trans->fs_info;
1877 qgroup_mark_inconsistent(trans->fs_info);
1878 btrfs_warn(trans->fs_info,
1886 * trans->transaction->delayed_refs, since inserted qrecord won't
1895 int btrfs_qgroup_trace_extent(struct btrfs_trans_handle *trans, u64 bytenr,
1898 struct btrfs_fs_info *fs_info = trans->fs_info;
1910 delayed_refs = &trans->transaction->delayed_refs;
1922 return btrfs_qgroup_trace_extent_post(trans, record);
1925 int btrfs_qgroup_trace_leaf_items(struct btrfs_trans_handle *trans,
1928 struct btrfs_fs_info *fs_info = trans->fs_info;
1958 ret = btrfs_qgroup_trace_extent(trans, bytenr, num_bytes);
2073 static int qgroup_trace_extent_swap(struct btrfs_trans_handle* trans,
2081 struct btrfs_fs_info *fs_info = trans->fs_info;
2156 ret = btrfs_qgroup_trace_extent(trans, src_path->nodes[dst_level]->start,
2160 ret = btrfs_qgroup_trace_extent(trans, dst_path->nodes[dst_level]->start,
2167 ret = btrfs_qgroup_trace_leaf_items(trans, src_path->nodes[0]);
2170 ret = btrfs_qgroup_trace_leaf_items(trans, dst_path->nodes[0]);
2199 static int qgroup_trace_new_subtree_blocks(struct btrfs_trans_handle* trans,
2205 struct btrfs_fs_info *fs_info = trans->fs_info;
2264 ret = qgroup_trace_extent_swap(trans, src_eb, dst_path, cur_level,
2280 ret = qgroup_trace_new_subtree_blocks(trans, src_eb,
2302 static int qgroup_trace_subtree_swap(struct btrfs_trans_handle *trans,
2307 struct btrfs_fs_info *fs_info = trans->fs_info;
2342 ret = qgroup_trace_new_subtree_blocks(trans, src_eb, dst_path, level,
2355 int btrfs_qgroup_trace_subtree(struct btrfs_trans_handle *trans,
2359 struct btrfs_fs_info *fs_info = trans->fs_info;
2402 ret = btrfs_qgroup_trace_leaf_items(trans, root_eb);
2450 ret = btrfs_qgroup_trace_extent(trans, child_bytenr,
2457 ret = btrfs_qgroup_trace_leaf_items(trans,
2693 int btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans, u64 bytenr,
2697 struct btrfs_fs_info *fs_info = trans->fs_info;
2730 trace_btrfs_qgroup_account_extent(fs_info, trans->transid, bytenr,
2786 int btrfs_qgroup_account_extents(struct btrfs_trans_handle *trans)
2788 struct btrfs_fs_info *fs_info = trans->fs_info;
2797 delayed_refs = &trans->transaction->delayed_refs;
2841 ctx.trans = trans;
2852 ret = btrfs_qgroup_account_extent(trans, record->bytenr,
2872 trace_qgroup_num_dirty_extents(fs_info, trans->transid,
2881 int btrfs_run_qgroups(struct btrfs_trans_handle *trans)
2883 struct btrfs_fs_info *fs_info = trans->fs_info;
2891 if (trans->transaction->state != TRANS_STATE_COMMIT_DOING)
2904 ret = update_qgroup_info_item(trans, qgroup);
2907 ret = update_qgroup_limit_item(trans, qgroup);
2918 ret = update_qgroup_status_item(trans);
2931 int btrfs_qgroup_inherit(struct btrfs_trans_handle *trans, u64 srcid,
2938 struct btrfs_fs_info *fs_info = trans->fs_info;
2953 * code can modify the fs as they all need to either start a new trans
2954 * or hold a trans handler, thus we don't need to hold
2959 if (trans->transaction->state == TRANS_STATE_COMMIT_DOING)
2996 ret = add_qgroup_item(trans, quota_root, objectid);
3008 ret = add_qgroup_relation_item(trans, objectid,
3012 ret = add_qgroup_relation_item(trans, *i_qgroups,
3297 static int qgroup_rescan_leaf(struct btrfs_trans_handle *trans,
3300 struct btrfs_fs_info *fs_info = trans->fs_info;
3371 ret = btrfs_qgroup_account_extent(trans, found.objectid,
3400 struct btrfs_trans_handle *trans = NULL;
3418 trans = btrfs_start_transaction(fs_info->fs_root, 0);
3419 if (IS_ERR(trans)) {
3420 err = PTR_ERR(trans);
3424 err = qgroup_rescan_leaf(trans, path);
3428 btrfs_commit_transaction(trans);
3430 btrfs_end_transaction(trans);
3453 trans = btrfs_start_transaction(fs_info->quota_root, 1);
3454 if (IS_ERR(trans)) {
3455 err = PTR_ERR(trans);
3456 trans = NULL;
3462 trans = NULL;
3469 if (trans) {
3470 ret = update_qgroup_status_item(trans);
3482 if (!trans)
3485 btrfs_end_transaction(trans);
3587 struct btrfs_trans_handle *trans;
3604 trans = btrfs_attach_transaction_barrier(fs_info->fs_root);
3605 if (IS_ERR(trans) && trans != ERR_PTR(-ENOENT)) {
3607 return PTR_ERR(trans);
3608 } else if (trans != ERR_PTR(-ENOENT)) {
3609 ret = btrfs_commit_transaction(trans);
3749 struct btrfs_trans_handle *trans;
3772 trans = btrfs_attach_transaction_barrier(root);
3773 if (IS_ERR(trans)) {
3774 ret = PTR_ERR(trans);
3780 ret = btrfs_commit_transaction(trans);
4250 int btrfs_qgroup_add_swapped_blocks(struct btrfs_trans_handle *trans,
4359 int btrfs_qgroup_trace_subtree_after_cow(struct btrfs_trans_handle *trans,
4430 ret = qgroup_trace_subtree_swap(trans, reloc_eb, subvol_eb,
4445 void btrfs_qgroup_destroy_extent_records(struct btrfs_transaction *trans)
4451 root = &trans->delayed_refs.dirty_extent_root;