1
/******************************************************
6
Created 3/26/1996 Heikki Tuuri
7
*******************************************************/
11
/**********************************************************************
12
Gets a rollback segment header. */
17
/* out: rollback segment header, page
19
ulint space, /* in: space where placed */
20
ulint page_no, /* in: page number of the header */
21
mtr_t* mtr) /* in: mtr */
25
header = TRX_RSEG + buf_page_get(space, page_no, RW_X_LATCH, mtr);
27
buf_page_dbg_add_level(header, SYNC_RSEG_HEADER);
32
/**********************************************************************
33
Gets a newly created rollback segment header. */
38
/* out: rollback segment header, page
40
ulint space, /* in: space where placed */
41
ulint page_no, /* in: page number of the header */
42
mtr_t* mtr) /* in: mtr */
46
header = TRX_RSEG + buf_page_get(space, page_no, RW_X_LATCH, mtr);
48
buf_page_dbg_add_level(header, SYNC_RSEG_HEADER_NEW);
53
/*******************************************************************
54
Gets the file page number of the nth undo log slot. */
57
trx_rsegf_get_nth_undo(
58
/*===================*/
59
/* out: page number of the undo log segment */
60
trx_rsegf_t* rsegf, /* in: rollback segment header */
61
ulint n, /* in: index of slot */
62
mtr_t* mtr) /* in: mtr */
64
ut_ad(n < TRX_RSEG_N_SLOTS);
66
return(mtr_read_ulint(rsegf + TRX_RSEG_UNDO_SLOTS +
67
n * TRX_RSEG_SLOT_SIZE, MLOG_4BYTES, mtr));
70
/*******************************************************************
71
Sets the file page number of the nth undo log slot. */
74
trx_rsegf_set_nth_undo(
75
/*===================*/
76
trx_rsegf_t* rsegf, /* in: rollback segment header */
77
ulint n, /* in: index of slot */
78
ulint page_no,/* in: page number of the undo log segment */
79
mtr_t* mtr) /* in: mtr */
81
ut_ad(n < TRX_RSEG_N_SLOTS);
83
mlog_write_ulint(rsegf + TRX_RSEG_UNDO_SLOTS + n * TRX_RSEG_SLOT_SIZE,
84
page_no, MLOG_4BYTES, mtr);
87
/********************************************************************
88
Looks for a free slot for an undo log segment. */
91
trx_rsegf_undo_find_free(
92
/*=====================*/
93
/* out: slot index or ULINT_UNDEFINED if not
95
trx_rsegf_t* rsegf, /* in: rollback segment header */
96
mtr_t* mtr) /* in: mtr */
101
for (i = 0; i < TRX_RSEG_N_SLOTS; i++) {
103
page_no = trx_rsegf_get_nth_undo(rsegf, i, mtr);
105
if (page_no == FIL_NULL) {
111
return(ULINT_UNDEFINED);