Lines Matching refs:tp

65 	struct xfs_trans	*tp)
67 xfs_extent_busy_sort(&tp->t_busy);
68 xfs_extent_busy_clear(tp->t_mountp, &tp->t_busy, false);
70 trace_xfs_trans_free(tp, _RET_IP_);
71 xfs_trans_clear_context(tp);
72 if (!(tp->t_flags & XFS_TRANS_NO_WRITECOUNT))
73 sb_end_intwrite(tp->t_mountp->m_super);
74 xfs_trans_free_dqinfo(tp);
75 kmem_cache_free(xfs_trans_zone, tp);
88 struct xfs_trans *tp)
92 trace_xfs_trans_dup(tp, _RET_IP_);
100 ntp->t_mountp = tp->t_mountp;
106 ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES);
107 ASSERT(tp->t_ticket != NULL);
110 (tp->t_flags & XFS_TRANS_RESERVE) |
111 (tp->t_flags & XFS_TRANS_NO_WRITECOUNT) |
112 (tp->t_flags & XFS_TRANS_RES_FDBLKS);
114 tp->t_flags |= XFS_TRANS_NO_WRITECOUNT;
115 ntp->t_ticket = xfs_log_ticket_get(tp->t_ticket);
117 ASSERT(tp->t_blk_res >= tp->t_blk_res_used);
118 ntp->t_blk_res = tp->t_blk_res - tp->t_blk_res_used;
119 tp->t_blk_res = tp->t_blk_res_used;
121 ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_res_used;
122 tp->t_rtx_res = tp->t_rtx_res_used;
124 xfs_trans_switch_context(tp, ntp);
126 /* move deferred ops over to the new tp */
127 xfs_defer_move(ntp, tp);
129 xfs_trans_dup_dqinfo(tp, ntp);
149 struct xfs_trans *tp,
154 struct xfs_mount *mp = tp->t_mountp;
156 bool rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
167 tp->t_blk_res += blocks;
176 ASSERT(tp->t_log_res == 0 ||
177 tp->t_log_res == resp->tr_logres);
178 ASSERT(tp->t_log_count == 0 ||
179 tp->t_log_count == resp->tr_logcount);
182 tp->t_flags |= XFS_TRANS_PERM_LOG_RES;
185 ASSERT(tp->t_ticket == NULL);
186 ASSERT(!(tp->t_flags & XFS_TRANS_PERM_LOG_RES));
189 if (tp->t_ticket != NULL) {
191 error = xfs_log_regrant(mp, tp->t_ticket);
196 &tp->t_ticket, XFS_TRANSACTION,
203 tp->t_log_res = resp->tr_logres;
204 tp->t_log_count = resp->tr_logcount;
218 tp->t_rtx_res += rtextents;
229 xfs_log_ticket_ungrant(mp->m_log, tp->t_ticket);
230 tp->t_ticket = NULL;
231 tp->t_log_res = 0;
232 tp->t_flags &= ~XFS_TRANS_PERM_LOG_RES;
238 tp->t_blk_res = 0;
252 struct xfs_trans *tp;
260 tp = kmem_cache_zalloc(xfs_trans_zone, GFP_KERNEL | __GFP_NOFAIL);
263 xfs_trans_set_context(tp);
274 tp->t_magic = XFS_TRANS_HEADER_MAGIC;
275 tp->t_flags = flags;
276 tp->t_mountp = mp;
277 INIT_LIST_HEAD(&tp->t_items);
278 INIT_LIST_HEAD(&tp->t_busy);
279 INIT_LIST_HEAD(&tp->t_dfops);
280 tp->t_firstblock = NULLFSBLOCK;
282 error = xfs_trans_reserve(tp, resp, blocks, rtextents);
284 xfs_trans_cancel(tp);
288 trace_xfs_trans_alloc(tp, _RET_IP_);
290 *tpp = tp;
338 xfs_trans_t *tp,
343 xfs_mount_t *mp = tp->t_mountp;
347 tp->t_icount_delta += delta;
352 tp->t_ifree_delta += delta;
363 tp->t_blk_res_used += (uint)-delta;
364 if (tp->t_blk_res_used > tp->t_blk_res)
366 } else if (delta > 0 && (tp->t_flags & XFS_TRANS_RES_FDBLKS)) {
377 UINT_MAX - tp->t_blk_res);
378 tp->t_blk_res += blkres_delta;
381 tp->t_fdblocks_delta += delta;
391 tp->t_res_fdblocks_delta += delta;
402 tp->t_rtx_res_used += (uint)-delta;
403 ASSERT(tp->t_rtx_res_used <= tp->t_rtx_res);
405 tp->t_frextents_delta += delta;
414 tp->t_res_frextents_delta += delta;
418 tp->t_dblocks_delta += delta;
422 tp->t_agcount_delta += delta;
425 tp->t_imaxpct_delta += delta;
428 tp->t_rextsize_delta += delta;
431 tp->t_rbmblocks_delta += delta;
434 tp->t_rblocks_delta += delta;
437 tp->t_rextents_delta += delta;
440 tp->t_rextslog_delta += delta;
447 tp->t_flags |= flags;
460 xfs_trans_t *tp)
466 bp = xfs_trans_getsb(tp);
472 ASSERT((tp->t_fdblocks_delta + tp->t_res_fdblocks_delta) ==
473 (tp->t_ag_freeblks_delta + tp->t_ag_flist_delta +
474 tp->t_ag_btree_delta));
479 if (!xfs_sb_version_haslazysbcount(&(tp->t_mountp->m_sb))) {
480 if (tp->t_icount_delta)
481 be64_add_cpu(&sbp->sb_icount, tp->t_icount_delta);
482 if (tp->t_ifree_delta)
483 be64_add_cpu(&sbp->sb_ifree, tp->t_ifree_delta);
484 if (tp->t_fdblocks_delta)
485 be64_add_cpu(&sbp->sb_fdblocks, tp->t_fdblocks_delta);
486 if (tp->t_res_fdblocks_delta)
487 be64_add_cpu(&sbp->sb_fdblocks, tp->t_res_fdblocks_delta);
490 if (tp->t_frextents_delta)
491 be64_add_cpu(&sbp->sb_frextents, tp->t_frextents_delta);
492 if (tp->t_res_frextents_delta)
493 be64_add_cpu(&sbp->sb_frextents, tp->t_res_frextents_delta);
495 if (tp->t_dblocks_delta) {
496 be64_add_cpu(&sbp->sb_dblocks, tp->t_dblocks_delta);
499 if (tp->t_agcount_delta) {
500 be32_add_cpu(&sbp->sb_agcount, tp->t_agcount_delta);
503 if (tp->t_imaxpct_delta) {
504 sbp->sb_imax_pct += tp->t_imaxpct_delta;
507 if (tp->t_rextsize_delta) {
508 be32_add_cpu(&sbp->sb_rextsize, tp->t_rextsize_delta);
511 if (tp->t_rbmblocks_delta) {
512 be32_add_cpu(&sbp->sb_rbmblocks, tp->t_rbmblocks_delta);
515 if (tp->t_rblocks_delta) {
516 be64_add_cpu(&sbp->sb_rblocks, tp->t_rblocks_delta);
519 if (tp->t_rextents_delta) {
520 be64_add_cpu(&sbp->sb_rextents, tp->t_rextents_delta);
523 if (tp->t_rextslog_delta) {
524 sbp->sb_rextslog += tp->t_rextslog_delta;
528 xfs_trans_buf_set_type(tp, bp, XFS_BLFT_SB_BUF);
533 xfs_trans_log_buf(tp, bp, 0, sizeof(xfs_dsb_t) - 1);
539 xfs_trans_log_buf(tp, bp, offsetof(xfs_dsb_t, sb_icount),
563 struct xfs_trans *tp)
565 struct xfs_mount *mp = tp->t_mountp;
566 bool rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
574 if (tp->t_blk_res > 0)
575 blkdelta = tp->t_blk_res;
576 if ((tp->t_fdblocks_delta != 0) &&
578 (tp->t_flags & XFS_TRANS_SB_DIRTY)))
579 blkdelta += tp->t_fdblocks_delta;
581 if (tp->t_rtx_res > 0)
582 rtxdelta = tp->t_rtx_res;
583 if ((tp->t_frextents_delta != 0) &&
584 (tp->t_flags & XFS_TRANS_SB_DIRTY))
585 rtxdelta += tp->t_frextents_delta;
588 (tp->t_flags & XFS_TRANS_SB_DIRTY)) {
589 idelta = tp->t_icount_delta;
590 ifreedelta = tp->t_ifree_delta;
613 if (rtxdelta == 0 && !(tp->t_flags & XFS_TRANS_SB_DIRTY))
618 mp->m_sb.sb_fdblocks += tp->t_fdblocks_delta + tp->t_res_fdblocks_delta;
622 mp->m_sb.sb_dblocks += tp->t_dblocks_delta;
623 mp->m_sb.sb_agcount += tp->t_agcount_delta;
624 mp->m_sb.sb_imax_pct += tp->t_imaxpct_delta;
625 mp->m_sb.sb_rextsize += tp->t_rextsize_delta;
626 mp->m_sb.sb_rbmblocks += tp->t_rbmblocks_delta;
627 mp->m_sb.sb_rblocks += tp->t_rblocks_delta;
628 mp->m_sb.sb_rextents += tp->t_rextents_delta;
629 mp->m_sb.sb_rextslog += tp->t_rextslog_delta;
644 struct xfs_trans *tp,
647 ASSERT(lip->li_mountp == tp->t_mountp);
648 ASSERT(lip->li_ailp == tp->t_mountp->m_ail);
652 list_add_tail(&lip->li_trans, &tp->t_items);
653 trace_xfs_trans_add_item(tp, _RET_IP_);
672 struct xfs_trans *tp,
677 trace_xfs_trans_free_items(tp, _RET_IP_);
679 list_for_each_entry_safe(lip, next, &tp->t_items, li_trans) {
831 struct xfs_trans *tp,
834 struct xfs_mount *mp = tp->t_mountp;
837 int sync = tp->t_flags & XFS_TRANS_SYNC;
839 trace_xfs_trans_commit(tp, _RET_IP_);
845 WARN_ON_ONCE(!list_empty(&tp->t_dfops) &&
846 !(tp->t_flags & XFS_TRANS_PERM_LOG_RES));
847 if (!regrant && (tp->t_flags & XFS_TRANS_PERM_LOG_RES)) {
848 error = xfs_defer_finish_noroll(&tp);
860 if (!(tp->t_flags & XFS_TRANS_DIRTY))
868 ASSERT(tp->t_ticket != NULL);
873 if (tp->t_flags & XFS_TRANS_SB_DIRTY)
874 xfs_trans_apply_sb_deltas(tp);
875 xfs_trans_apply_dquot_deltas(tp);
877 xlog_cil_commit(mp->m_log, tp, &commit_seq, regrant);
879 xfs_trans_free(tp);
895 xfs_trans_unreserve_and_mod_sb(tp);
902 xfs_trans_unreserve_and_mod_dquots(tp);
903 if (tp->t_ticket) {
905 xfs_log_ticket_regrant(mp->m_log, tp->t_ticket);
907 xfs_log_ticket_ungrant(mp->m_log, tp->t_ticket);
908 tp->t_ticket = NULL;
910 xfs_trans_free_items(tp, !!error);
911 xfs_trans_free(tp);
919 struct xfs_trans *tp)
921 return __xfs_trans_commit(tp, false);
934 struct xfs_trans *tp)
936 struct xfs_mount *mp = tp->t_mountp;
937 bool dirty = (tp->t_flags & XFS_TRANS_DIRTY);
939 trace_xfs_trans_cancel(tp, _RET_IP_);
941 if (tp->t_flags & XFS_TRANS_PERM_LOG_RES)
942 xfs_defer_cancel(tp);
957 list_for_each_entry(lip, &tp->t_items, li_trans)
961 xfs_trans_unreserve_and_mod_sb(tp);
962 xfs_trans_unreserve_and_mod_dquots(tp);
964 if (tp->t_ticket) {
965 xfs_log_ticket_ungrant(mp->m_log, tp->t_ticket);
966 tp->t_ticket = NULL;
969 xfs_trans_free_items(tp, dirty);
970 xfs_trans_free(tp);