Lines Matching defs:tr

28 static void gfs2_print_trans(struct gfs2_sbd *sdp, const struct gfs2_trans *tr)
30 fs_warn(sdp, "Transaction created at: %pSR\n", (void *)tr->tr_ip);
32 tr->tr_blocks, tr->tr_revokes, tr->tr_reserved,
33 test_bit(TR_TOUCHED, &tr->tr_flags));
35 tr->tr_num_buf_new, tr->tr_num_buf_rm,
36 tr->tr_num_databuf_new, tr->tr_num_databuf_rm,
37 tr->tr_num_revoke);
40 int __gfs2_trans_begin(struct gfs2_trans *tr, struct gfs2_sbd *sdp,
55 tr->tr_ip = ip;
56 tr->tr_blocks = blocks;
57 tr->tr_revokes = revokes;
58 tr->tr_reserved = GFS2_LOG_FLUSH_MIN_BLOCKS;
65 tr->tr_reserved += blocks + 1 + DIV_ROUND_UP(blocks - 1, databuf_limit(sdp));
67 INIT_LIST_HEAD(&tr->tr_databuf);
68 INIT_LIST_HEAD(&tr->tr_buf);
69 INIT_LIST_HEAD(&tr->tr_list);
70 INIT_LIST_HEAD(&tr->tr_ail1_list);
71 INIT_LIST_HEAD(&tr->tr_ail2_list);
73 if (gfs2_assert_warn(sdp, tr->tr_reserved <= sdp->sd_jdesc->jd_blocks))
88 if (gfs2_log_try_reserve(sdp, tr, &extra_revokes))
91 gfs2_log_reserve(sdp, tr, &extra_revokes);
97 gfs2_log_release_revokes(sdp, tr->tr_revokes);
99 gfs2_log_release(sdp, tr->tr_reserved);
104 current->journal_info = tr;
112 struct gfs2_trans *tr;
115 tr = kmem_cache_zalloc(gfs2_trans_cachep, GFP_NOFS);
116 if (!tr)
118 error = __gfs2_trans_begin(tr, sdp, blocks, revokes, _RET_IP_);
120 kmem_cache_free(gfs2_trans_cachep, tr);
126 struct gfs2_trans *tr = current->journal_info;
131 if (!test_bit(TR_TOUCHED, &tr->tr_flags)) {
132 gfs2_log_release_revokes(sdp, tr->tr_revokes);
134 gfs2_log_release(sdp, tr->tr_reserved);
135 if (!test_bit(TR_ONSTACK, &tr->tr_flags))
136 gfs2_trans_free(sdp, tr);
141 gfs2_log_release_revokes(sdp, tr->tr_revokes - tr->tr_num_revoke);
143 nbuf = tr->tr_num_buf_new + tr->tr_num_databuf_new;
144 nbuf -= tr->tr_num_buf_rm;
145 nbuf -= tr->tr_num_databuf_rm;
147 if (gfs2_assert_withdraw(sdp, nbuf <= tr->tr_blocks) ||
148 gfs2_assert_withdraw(sdp, tr->tr_num_revoke <= tr->tr_revokes))
149 gfs2_print_trans(sdp, tr);
151 gfs2_log_commit(sdp, tr);
152 if (!test_bit(TR_ONSTACK, &tr->tr_flags) &&
153 !test_bit(TR_ATTACHED, &tr->tr_flags))
154 gfs2_trans_free(sdp, tr);
194 struct gfs2_trans *tr = current->journal_info;
200 set_bit(TR_TOUCHED, &tr->tr_flags);
216 set_bit(TR_TOUCHED, &tr->tr_flags);
221 tr->tr_num_databuf_new++;
222 list_add_tail(&bd->bd_list, &tr->tr_databuf);
236 struct gfs2_trans *tr = current->journal_info;
241 set_bit(TR_TOUCHED, &tr->tr_flags);
259 set_bit(TR_TOUCHED, &tr->tr_flags);
284 list_add(&bd->bd_list, &tr->tr_buf);
285 tr->tr_num_buf_new++;
296 struct gfs2_trans *tr = current->journal_info;
300 set_bit(TR_TOUCHED, &tr->tr_flags);
301 tr->tr_num_revoke++;
326 void gfs2_trans_free(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
328 if (tr == NULL)
331 gfs2_assert_warn(sdp, list_empty(&tr->tr_ail1_list));
332 gfs2_assert_warn(sdp, list_empty(&tr->tr_ail2_list));
333 gfs2_assert_warn(sdp, list_empty(&tr->tr_databuf));
334 gfs2_assert_warn(sdp, list_empty(&tr->tr_buf));
335 kmem_cache_free(gfs2_trans_cachep, tr);