Lines Matching refs:tp

67 	struct xfs_trans	*tp)
69 xfs_extent_busy_sort(&tp->t_busy);
70 xfs_extent_busy_clear(tp->t_mountp, &tp->t_busy, false);
72 trace_xfs_trans_free(tp, _RET_IP_);
73 xfs_trans_clear_context(tp);
74 if (!(tp->t_flags & XFS_TRANS_NO_WRITECOUNT))
75 sb_end_intwrite(tp->t_mountp->m_super);
76 xfs_trans_free_dqinfo(tp);
77 kmem_cache_free(xfs_trans_cache, tp);
90 struct xfs_trans *tp)
94 trace_xfs_trans_dup(tp, _RET_IP_);
102 ntp->t_mountp = tp->t_mountp;
108 ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES);
109 ASSERT(tp->t_ticket != NULL);
112 (tp->t_flags & XFS_TRANS_RESERVE) |
113 (tp->t_flags & XFS_TRANS_NO_WRITECOUNT) |
114 (tp->t_flags & XFS_TRANS_RES_FDBLKS);
116 tp->t_flags |= XFS_TRANS_NO_WRITECOUNT;
117 ntp->t_ticket = xfs_log_ticket_get(tp->t_ticket);
119 ASSERT(tp->t_blk_res >= tp->t_blk_res_used);
120 ntp->t_blk_res = tp->t_blk_res - tp->t_blk_res_used;
121 tp->t_blk_res = tp->t_blk_res_used;
123 ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_res_used;
124 tp->t_rtx_res = tp->t_rtx_res_used;
126 xfs_trans_switch_context(tp, ntp);
128 /* move deferred ops over to the new tp */
129 xfs_defer_move(ntp, tp);
131 xfs_trans_dup_dqinfo(tp, ntp);
151 struct xfs_trans *tp,
156 struct xfs_mount *mp = tp->t_mountp;
158 bool rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
169 tp->t_blk_res += blocks;
178 ASSERT(tp->t_log_res == 0 ||
179 tp->t_log_res == resp->tr_logres);
180 ASSERT(tp->t_log_count == 0 ||
181 tp->t_log_count == resp->tr_logcount);
184 tp->t_flags |= XFS_TRANS_PERM_LOG_RES;
187 ASSERT(tp->t_ticket == NULL);
188 ASSERT(!(tp->t_flags & XFS_TRANS_PERM_LOG_RES));
191 if (tp->t_ticket != NULL) {
193 error = xfs_log_regrant(mp, tp->t_ticket);
197 &tp->t_ticket, permanent);
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;
262 tp = kmem_cache_zalloc(xfs_trans_cache, GFP_KERNEL | __GFP_NOFAIL);
265 xfs_trans_set_context(tp);
276 tp->t_magic = XFS_TRANS_HEADER_MAGIC;
277 tp->t_flags = flags;
278 tp->t_mountp = mp;
279 INIT_LIST_HEAD(&tp->t_items);
280 INIT_LIST_HEAD(&tp->t_busy);
281 INIT_LIST_HEAD(&tp->t_dfops);
282 tp->t_highest_agno = NULLAGNUMBER;
284 error = xfs_trans_reserve(tp, resp, blocks, rtextents);
286 xfs_trans_cancel(tp);
301 xfs_trans_cancel(tp);
305 trace_xfs_trans_alloc(tp, _RET_IP_);
307 *tpp = tp;
355 xfs_trans_t *tp,
360 xfs_mount_t *mp = tp->t_mountp;
364 tp->t_icount_delta += delta;
369 tp->t_ifree_delta += delta;
380 tp->t_blk_res_used += (uint)-delta;
381 if (tp->t_blk_res_used > tp->t_blk_res)
383 } else if (delta > 0 && (tp->t_flags & XFS_TRANS_RES_FDBLKS)) {
394 UINT_MAX - tp->t_blk_res);
395 tp->t_blk_res += blkres_delta;
398 tp->t_fdblocks_delta += delta;
408 tp->t_res_fdblocks_delta += delta;
419 tp->t_rtx_res_used += (uint)-delta;
420 ASSERT(tp->t_rtx_res_used <= tp->t_rtx_res);
422 tp->t_frextents_delta += delta;
431 tp->t_res_frextents_delta += delta;
434 tp->t_dblocks_delta += delta;
438 tp->t_agcount_delta += delta;
441 tp->t_imaxpct_delta += delta;
444 tp->t_rextsize_delta += delta;
447 tp->t_rbmblocks_delta += delta;
450 tp->t_rblocks_delta += delta;
453 tp->t_rextents_delta += delta;
456 tp->t_rextslog_delta += delta;
463 tp->t_flags |= flags;
476 xfs_trans_t *tp)
482 bp = xfs_trans_getsb(tp);
488 if (!xfs_has_lazysbcount((tp->t_mountp))) {
489 if (tp->t_icount_delta)
490 be64_add_cpu(&sbp->sb_icount, tp->t_icount_delta);
491 if (tp->t_ifree_delta)
492 be64_add_cpu(&sbp->sb_ifree, tp->t_ifree_delta);
493 if (tp->t_fdblocks_delta)
494 be64_add_cpu(&sbp->sb_fdblocks, tp->t_fdblocks_delta);
495 if (tp->t_res_fdblocks_delta)
496 be64_add_cpu(&sbp->sb_fdblocks, tp->t_res_fdblocks_delta);
513 if (tp->t_frextents_delta || tp->t_res_frextents_delta) {
514 struct xfs_mount *mp = tp->t_mountp;
517 rtxdelta = tp->t_frextents_delta + tp->t_res_frextents_delta;
525 if (tp->t_dblocks_delta) {
526 be64_add_cpu(&sbp->sb_dblocks, tp->t_dblocks_delta);
529 if (tp->t_agcount_delta) {
530 be32_add_cpu(&sbp->sb_agcount, tp->t_agcount_delta);
533 if (tp->t_imaxpct_delta) {
534 sbp->sb_imax_pct += tp->t_imaxpct_delta;
537 if (tp->t_rextsize_delta) {
538 be32_add_cpu(&sbp->sb_rextsize, tp->t_rextsize_delta);
541 if (tp->t_rbmblocks_delta) {
542 be32_add_cpu(&sbp->sb_rbmblocks, tp->t_rbmblocks_delta);
545 if (tp->t_rblocks_delta) {
546 be64_add_cpu(&sbp->sb_rblocks, tp->t_rblocks_delta);
549 if (tp->t_rextents_delta) {
550 be64_add_cpu(&sbp->sb_rextents, tp->t_rextents_delta);
553 if (tp->t_rextslog_delta) {
554 sbp->sb_rextslog += tp->t_rextslog_delta;
558 xfs_trans_buf_set_type(tp, bp, XFS_BLFT_SB_BUF);
563 xfs_trans_log_buf(tp, bp, 0, sizeof(struct xfs_dsb) - 1);
569 xfs_trans_log_buf(tp, bp, offsetof(struct xfs_dsb, sb_icount),
593 struct xfs_trans *tp)
595 struct xfs_mount *mp = tp->t_mountp;
596 bool rsvd = (tp->t_flags & XFS_TRANS_RESERVE) != 0;
604 if (tp->t_blk_res > 0)
605 blkdelta = tp->t_blk_res;
606 if ((tp->t_fdblocks_delta != 0) &&
608 (tp->t_flags & XFS_TRANS_SB_DIRTY)))
609 blkdelta += tp->t_fdblocks_delta;
611 if (tp->t_rtx_res > 0)
612 rtxdelta = tp->t_rtx_res;
613 if ((tp->t_frextents_delta != 0) &&
614 (tp->t_flags & XFS_TRANS_SB_DIRTY))
615 rtxdelta += tp->t_frextents_delta;
618 (tp->t_flags & XFS_TRANS_SB_DIRTY)) {
619 idelta = tp->t_icount_delta;
620 ifreedelta = tp->t_ifree_delta;
641 if (!(tp->t_flags & XFS_TRANS_SB_DIRTY))
646 mp->m_sb.sb_fdblocks += tp->t_fdblocks_delta + tp->t_res_fdblocks_delta;
655 mp->m_sb.sb_dblocks += tp->t_dblocks_delta;
656 mp->m_sb.sb_agcount += tp->t_agcount_delta;
657 mp->m_sb.sb_imax_pct += tp->t_imaxpct_delta;
658 mp->m_sb.sb_rextsize += tp->t_rextsize_delta;
659 if (tp->t_rextsize_delta) {
663 mp->m_sb.sb_rbmblocks += tp->t_rbmblocks_delta;
664 mp->m_sb.sb_rblocks += tp->t_rblocks_delta;
665 mp->m_sb.sb_rextents += tp->t_rextents_delta;
666 mp->m_sb.sb_rextslog += tp->t_rextslog_delta;
681 struct xfs_trans *tp,
684 ASSERT(lip->li_log == tp->t_mountp->m_log);
685 ASSERT(lip->li_ailp == tp->t_mountp->m_ail);
689 list_add_tail(&lip->li_trans, &tp->t_items);
690 trace_xfs_trans_add_item(tp, _RET_IP_);
709 struct xfs_trans *tp,
714 trace_xfs_trans_free_items(tp, _RET_IP_);
716 list_for_each_entry_safe(lip, next, &tp->t_items, li_trans) {
905 struct xfs_trans *tp)
907 struct xfs_mount *mp = tp->t_mountp;
916 list_sort(NULL, &tp->t_items, xfs_trans_precommit_sort);
924 list_for_each_entry_safe(lip, n, &tp->t_items, li_trans) {
928 error = lip->li_ops->iop_precommit(tp, lip);
952 struct xfs_trans *tp,
955 struct xfs_mount *mp = tp->t_mountp;
959 int sync = tp->t_flags & XFS_TRANS_SYNC;
961 trace_xfs_trans_commit(tp, _RET_IP_);
963 error = xfs_trans_run_precommits(tp);
965 if (tp->t_flags & XFS_TRANS_PERM_LOG_RES)
966 xfs_defer_cancel(tp);
974 WARN_ON_ONCE(!list_empty(&tp->t_dfops) &&
975 !(tp->t_flags & XFS_TRANS_PERM_LOG_RES));
976 if (!regrant && (tp->t_flags & XFS_TRANS_PERM_LOG_RES)) {
977 error = xfs_defer_finish_noroll(&tp);
982 error = xfs_trans_run_precommits(tp);
994 if (!(tp->t_flags & XFS_TRANS_DIRTY))
1008 ASSERT(tp->t_ticket != NULL);
1013 if (tp->t_flags & XFS_TRANS_SB_DIRTY)
1014 xfs_trans_apply_sb_deltas(tp);
1015 xfs_trans_apply_dquot_deltas(tp);
1017 xlog_cil_commit(log, tp, &commit_seq, regrant);
1019 xfs_trans_free(tp);
1035 xfs_trans_unreserve_and_mod_sb(tp);
1042 xfs_trans_unreserve_and_mod_dquots(tp);
1043 if (tp->t_ticket) {
1045 xfs_log_ticket_regrant(log, tp->t_ticket);
1047 xfs_log_ticket_ungrant(log, tp->t_ticket);
1048 tp->t_ticket = NULL;
1050 xfs_trans_free_items(tp, !!error);
1051 xfs_trans_free(tp);
1059 struct xfs_trans *tp)
1061 return __xfs_trans_commit(tp, false);
1082 struct xfs_trans *tp)
1084 struct xfs_mount *mp = tp->t_mountp;
1086 bool dirty = (tp->t_flags & XFS_TRANS_DIRTY);
1088 trace_xfs_trans_cancel(tp, _RET_IP_);
1096 if (!list_empty(&tp->t_dfops)) {
1097 ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES);
1099 xfs_defer_cancel(tp);
1117 list_for_each_entry(lip, &tp->t_items, li_trans)
1121 xfs_trans_unreserve_and_mod_sb(tp);
1122 xfs_trans_unreserve_and_mod_dquots(tp);
1124 if (tp->t_ticket) {
1125 xfs_log_ticket_ungrant(log, tp->t_ticket);
1126 tp->t_ticket = NULL;
1129 xfs_trans_free_items(tp, dirty);
1130 xfs_trans_free(tp);
1197 struct xfs_trans *tp;
1205 force ? XFS_TRANS_RESERVE : 0, &tp);
1210 xfs_trans_ijoin(tp, ip, 0);
1219 error = xfs_trans_reserve_quota_nblks(tp, ip, dblocks, rblocks, force);
1221 xfs_trans_cancel(tp);
1230 *tpp = tp;
1234 xfs_trans_cancel(tp);
1250 struct xfs_trans *tp,
1256 return xfs_trans_reserve(tp, &resv, blocks, rtextents);
1265 struct xfs_trans *tp,
1278 error = xfs_trans_reserve(tp, &resv, dblocks, rtx);
1285 if (tp->t_flags & XFS_TRANS_RESERVE)
1288 error = xfs_trans_reserve_quota_nblks(tp, ip, dblocks, rblocks,
1294 xfs_mod_fdblocks(mp, dblocks, tp->t_flags & XFS_TRANS_RESERVE);
1295 tp->t_blk_res -= dblocks;
1297 tp->t_rtx_res -= rtx;
1315 struct xfs_trans *tp;
1320 error = xfs_trans_alloc(mp, resv, dblocks, 0, 0, &tp);
1324 error = xfs_trans_reserve_quota_icreate(tp, udqp, gdqp, pdqp, dblocks);
1326 xfs_trans_cancel(tp);
1332 xfs_trans_cancel(tp);
1336 *tpp = tp;
1358 struct xfs_trans *tp;
1367 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_ichange, 0, 0, 0, &tp);
1372 xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
1402 error = xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp,
1406 xfs_trans_cancel(tp);
1415 *tpp = tp;
1419 xfs_trans_cancel(tp);
1443 struct xfs_trans *tp;
1452 error = xfs_trans_alloc(mp, resv, resblks, 0, 0, &tp);
1456 error = xfs_trans_alloc(mp, resv, resblks, 0, 0, &tp);
1463 xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
1464 xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
1483 error = xfs_trans_reserve_quota_nblks(tp, dp, resblks, 0, false);
1486 xfs_trans_cancel(tp);
1500 *tpp = tp;
1505 xfs_trans_cancel(tp);