29 #include "trx0rseg.ic"
39 UNIV_INTERN mysql_pfs_key_t rseg_mutex_key;
55 while (rseg && rseg->
id !=
id) {
84 ut_ad(mutex_own(&kernel_mutex));
85 ut_ad(mtr_memo_contains(mtr, fil_space_get_latch(space, NULL),
89 block = fseg_create(space, 0,
90 TRX_RSEG + TRX_RSEG_FSEG_HEADER, mtr);
98 buf_block_dbg_add_level(block, SYNC_RSEG_HEADER_NEW);
112 flst_init(rsegf + TRX_RSEG_HISTORY, mtr);
115 for (i = 0; i < TRX_RSEG_N_SLOTS; i++) {
141 mutex_free(&rseg->
mutex);
143 if (! srv_apply_log_only) {
151 while (undo != NULL) {
162 while (undo != NULL) {
198 ulint sum_of_undo_sizes;
200 ut_ad(mutex_own(&kernel_mutex));
207 rseg->zip_size = zip_size;
208 rseg->page_no = page_no;
210 mutex_create(rseg_mutex_key, &rseg->
mutex, SYNC_RSEG);
225 rseg->curr_size =
mtr_read_ulint(rseg_header + TRX_RSEG_HISTORY_SIZE,
227 + 1 + sum_of_undo_sizes;
229 len =
flst_get_len(rseg_header + TRX_RSEG_HISTORY, mtr);
258 trx_rseg_create_instance(
265 for (i = 0; i < TRX_SYS_N_RSEGS; i++) {
281 zip_size = space ? fil_space_get_zip_size(space) : 0;
283 rseg = trx_rseg_mem_create(
284 i, space, zip_size, page_no, mtr);
296 trx_rseg_create(
void)
307 mtr_x_lock(fil_space_get_latch(TRX_SYS_SPACE, NULL), &mtr);
309 mutex_enter(&kernel_mutex);
313 if (slot_no != ULINT_UNDEFINED) {
320 TRX_SYS_SPACE, 0, ULINT_MAX, slot_no, &mtr);
330 zip_size = space ? fil_space_get_zip_size(space) : 0;
332 rseg = trx_rseg_mem_create(
333 slot_no, space, zip_size, page_no, &mtr);
336 mutex_exit(&kernel_mutex);
355 trx_rseg_create_instance(sys_header, mtr);