Lines Matching refs:tr
28 static void gfs2_print_trans(struct gfs2_sbd *sdp, const struct gfs2_trans *tr) in gfs2_print_trans() argument
30 fs_warn(sdp, "Transaction created at: %pSR\n", (void *)tr->tr_ip); in gfs2_print_trans()
32 tr->tr_blocks, tr->tr_revokes, tr->tr_reserved, in gfs2_print_trans()
33 test_bit(TR_TOUCHED, &tr->tr_flags)); in gfs2_print_trans()
35 tr->tr_num_buf_new, tr->tr_num_buf_rm, in gfs2_print_trans()
36 tr->tr_num_databuf_new, tr->tr_num_databuf_rm, in gfs2_print_trans()
37 tr->tr_num_revoke, tr->tr_num_revoke_rm); in gfs2_print_trans()
43 struct gfs2_trans *tr; in gfs2_trans_begin() local
55 tr = kmem_cache_zalloc(gfs2_trans_cachep, GFP_NOFS); in gfs2_trans_begin()
56 if (!tr) in gfs2_trans_begin()
59 tr->tr_ip = _RET_IP_; in gfs2_trans_begin()
60 tr->tr_blocks = blocks; in gfs2_trans_begin()
61 tr->tr_revokes = revokes; in gfs2_trans_begin()
62 tr->tr_reserved = 1; in gfs2_trans_begin()
63 set_bit(TR_ALLOCED, &tr->tr_flags); in gfs2_trans_begin()
65 tr->tr_reserved += 6 + blocks; in gfs2_trans_begin()
67 tr->tr_reserved += gfs2_struct2blk(sdp, revokes); in gfs2_trans_begin()
68 INIT_LIST_HEAD(&tr->tr_databuf); in gfs2_trans_begin()
69 INIT_LIST_HEAD(&tr->tr_buf); in gfs2_trans_begin()
70 INIT_LIST_HEAD(&tr->tr_list); in gfs2_trans_begin()
71 INIT_LIST_HEAD(&tr->tr_ail1_list); in gfs2_trans_begin()
72 INIT_LIST_HEAD(&tr->tr_ail2_list); in gfs2_trans_begin()
76 error = gfs2_log_reserve(sdp, tr->tr_reserved); in gfs2_trans_begin()
80 current->journal_info = tr; in gfs2_trans_begin()
86 kmem_cache_free(gfs2_trans_cachep, tr); in gfs2_trans_begin()
93 struct gfs2_trans *tr = current->journal_info; in gfs2_trans_end() local
95 int alloced = test_bit(TR_ALLOCED, &tr->tr_flags); in gfs2_trans_end()
99 if (!test_bit(TR_TOUCHED, &tr->tr_flags)) { in gfs2_trans_end()
100 gfs2_log_release(sdp, tr->tr_reserved); in gfs2_trans_end()
102 gfs2_trans_free(sdp, tr); in gfs2_trans_end()
108 nbuf = tr->tr_num_buf_new + tr->tr_num_databuf_new; in gfs2_trans_end()
109 nbuf -= tr->tr_num_buf_rm; in gfs2_trans_end()
110 nbuf -= tr->tr_num_databuf_rm; in gfs2_trans_end()
112 if (gfs2_assert_withdraw(sdp, (nbuf <= tr->tr_blocks) && in gfs2_trans_end()
113 (tr->tr_num_revoke <= tr->tr_revokes))) in gfs2_trans_end()
114 gfs2_print_trans(sdp, tr); in gfs2_trans_end()
116 gfs2_log_commit(sdp, tr); in gfs2_trans_end()
117 if (alloced && !test_bit(TR_ATTACHED, &tr->tr_flags)) in gfs2_trans_end()
118 gfs2_trans_free(sdp, tr); in gfs2_trans_end()
159 struct gfs2_trans *tr = current->journal_info; in gfs2_trans_add_data() local
165 set_bit(TR_TOUCHED, &tr->tr_flags); in gfs2_trans_add_data()
181 set_bit(TR_TOUCHED, &tr->tr_flags); in gfs2_trans_add_data()
186 tr->tr_num_databuf_new++; in gfs2_trans_add_data()
187 list_add_tail(&bd->bd_list, &tr->tr_databuf); in gfs2_trans_add_data()
200 struct gfs2_trans *tr = current->journal_info; in gfs2_trans_add_meta() local
205 set_bit(TR_TOUCHED, &tr->tr_flags); in gfs2_trans_add_meta()
223 set_bit(TR_TOUCHED, &tr->tr_flags); in gfs2_trans_add_meta()
246 list_add(&bd->bd_list, &tr->tr_buf); in gfs2_trans_add_meta()
247 tr->tr_num_buf_new++; in gfs2_trans_add_meta()
256 struct gfs2_trans *tr = current->journal_info; in gfs2_trans_add_revoke() local
260 set_bit(TR_TOUCHED, &tr->tr_flags); in gfs2_trans_add_revoke()
261 tr->tr_num_revoke++; in gfs2_trans_add_revoke()
267 struct gfs2_trans *tr = current->journal_info; in gfs2_trans_remove_revoke() local
279 tr->tr_num_revoke_rm++; in gfs2_trans_remove_revoke()
287 void gfs2_trans_free(struct gfs2_sbd *sdp, struct gfs2_trans *tr) in gfs2_trans_free() argument
289 if (tr == NULL) in gfs2_trans_free()
292 gfs2_assert_warn(sdp, list_empty(&tr->tr_ail1_list)); in gfs2_trans_free()
293 gfs2_assert_warn(sdp, list_empty(&tr->tr_ail2_list)); in gfs2_trans_free()
294 gfs2_assert_warn(sdp, list_empty(&tr->tr_databuf)); in gfs2_trans_free()
295 gfs2_assert_warn(sdp, list_empty(&tr->tr_buf)); in gfs2_trans_free()
296 kmem_cache_free(gfs2_trans_cachep, tr); in gfs2_trans_free()