40 #ifndef UNIV_HOTBACKUP
54 extern ibool log_debug_writes;
57 # define log_do_write TRUE
61 #define LOG_NO_WAIT 91
62 #define LOG_WAIT_ONE_GROUP 92
63 #define LOG_WAIT_ALL_GROUPS 93
66 #define LOG_MAX_N_GROUPS 32
68 #ifndef UNIV_HOTBACKUP
86 ib_int64_t* log_file_offset,
88 ib_uint64_t first_header_lsn,
94 ib_int64_t log_file_size);
96 #ifndef UNIV_HOTBACKUP
107 ib_uint64_t* start_lsn);
161 log_get_capacity(
void);
181 ulint archive_space_id);
207 ibool flush_to_disk);
236 ib_uint64_t new_oldest,
365 log_reset_first_header_and_checkpoint(
382 #ifndef UNIV_HOTBACKUP
392 ib_uint64_t start_lsn,
393 ib_uint64_t end_lsn);
404 ib_uint64_t start_lsn,
407 ulint new_data_offset);
439 const byte* log_block);
447 const byte* log_block);
455 const byte* log_block);
479 const byte* log_block);
496 const byte* log_block);
512 const byte* log_block);
572 extern log_t* log_sys;
575 #define LOG_FLUSH 7652559
576 #define LOG_CHECKPOINT 78656949
577 #ifdef UNIV_LOG_ARCHIVE
578 # define LOG_ARCHIVE 11122331
580 #define LOG_RECOVER 98887331
583 #define LOG_START_LSN ((ib_uint64_t) (16 * OS_FILE_LOG_BLOCK_SIZE))
585 #define LOG_BUFFER_SIZE (srv_log_buffer_size * UNIV_PAGE_SIZE)
586 #define LOG_ARCHIVE_BUF_SIZE (srv_log_buffer_size * UNIV_PAGE_SIZE / 4)
589 #define LOG_BLOCK_HDR_NO 0
594 #define LOG_BLOCK_FLUSH_BIT_MASK 0x80000000UL
597 #define LOG_BLOCK_HDR_DATA_LEN 4
599 #define LOG_BLOCK_FIRST_REC_GROUP 6
610 #define LOG_BLOCK_CHECKPOINT_NO 8
616 #define LOG_BLOCK_HDR_SIZE 12
620 #define LOG_BLOCK_CHECKSUM 4
625 #define LOG_BLOCK_TRL_SIZE 4
628 #define LOG_CHECKPOINT_NO 0
629 #define LOG_CHECKPOINT_LSN 8
630 #define LOG_CHECKPOINT_OFFSET 16
631 #define LOG_CHECKPOINT_LOG_BUF_SIZE 20
632 #define LOG_CHECKPOINT_ARCHIVED_LSN 24
633 #define LOG_CHECKPOINT_GROUP_ARRAY 32
637 #define LOG_CHECKPOINT_ARCHIVED_FILE_NO 0
638 #define LOG_CHECKPOINT_ARCHIVED_OFFSET 4
640 #define LOG_CHECKPOINT_ARRAY_END (LOG_CHECKPOINT_GROUP_ARRAY\
641 + LOG_MAX_N_GROUPS * 8)
642 #define LOG_CHECKPOINT_CHECKSUM_1 LOG_CHECKPOINT_ARRAY_END
643 #define LOG_CHECKPOINT_CHECKSUM_2 (4 + LOG_CHECKPOINT_ARRAY_END)
644 #define LOG_CHECKPOINT_FSP_FREE_LIMIT (8 + LOG_CHECKPOINT_ARRAY_END)
652 #define LOG_CHECKPOINT_FSP_MAGIC_N (12 + LOG_CHECKPOINT_ARRAY_END)
657 #define LOG_CHECKPOINT_SIZE (16 + LOG_CHECKPOINT_ARRAY_END)
659 #define LOG_CHECKPOINT_FSP_MAGIC_N_VAL 1441231243
662 #define LOG_GROUP_ID 0
663 #define LOG_FILE_START_LSN 4
665 #define LOG_FILE_NO 12
668 #define LOG_FILE_WAS_CREATED_BY_HOT_BACKUP 16
676 #define LOG_FILE_OS_FILE_LOG_BLOCK_SIZE 64
679 #define LOG_FILE_ARCH_COMPLETED OS_FILE_LOG_BLOCK_SIZE
684 #define LOG_FILE_END_LSN (OS_FILE_LOG_BLOCK_SIZE + 4)
692 #define LOG_CHECKPOINT_1 OS_FILE_LOG_BLOCK_SIZE
698 #define LOG_CHECKPOINT_2 (3 * OS_FILE_LOG_BLOCK_SIZE)
701 #define LOG_FILE_HDR_SIZE (4 * OS_FILE_LOG_BLOCK_SIZE)
703 #define LOG_GROUP_OK 301
704 #define LOG_GROUP_CORRUPTED 302
726 #ifdef UNIV_LOG_ARCHIVE
728 byte** archive_file_header_bufs_ptr;
729 byte** archive_file_header_bufs;
731 ulint archive_space_id;
734 ulint archived_file_no;
736 ulint archived_offset;
740 ulint next_archived_file_no;
746 ulint next_archived_offset;
767 #ifndef UNIV_HOTBACKUP
803 #ifndef UNIV_HOTBACKUP
930 #ifdef UNIV_LOG_ARCHIVE
932 ulint archiving_state;
934 ib_uint64_t archived_lsn;
936 ulint max_archived_lsn_age_async;
940 ulint max_archived_lsn_age;
943 ib_uint64_t next_archived_lsn;
949 ulint archiving_phase;
951 ulint n_pending_archive_ios;
958 ulint archive_buf_size;
969 #define log_flush_order_mutex_own() \
970 mutex_own(&log_sys->log_flush_order_mutex)
973 #define log_flush_order_mutex_enter() do { \
974 mutex_enter(&log_sys->log_flush_order_mutex); \
977 # define log_flush_order_mutex_exit() do { \
978 mutex_exit(&log_sys->log_flush_order_mutex); \
981 #ifdef UNIV_LOG_ARCHIVE
983 #define LOG_ARCH_ON 71
984 #define LOG_ARCH_STOPPING 72
985 #define LOG_ARCH_STOPPING2 73
986 #define LOG_ARCH_STOPPED 74
987 #define LOG_ARCH_OFF 75
992 #include "log0log.ic"
UNIV_INTERN void log_io_complete(log_group_t *group)
UNIV_INTERN ulint log_calc_where_lsn_is(ib_int64_t *log_file_offset, ib_uint64_t first_header_lsn, ib_uint64_t lsn, ulint n_log_files, ib_int64_t log_file_size)
UNIV_INLINE void log_block_set_checksum(byte *log_block, ulint checksum)
ib_uint64_t written_to_some_lsn
UNIV_INTERN void log_make_checkpoint_at(ib_uint64_t lsn, ibool write_always)
UNIV_INLINE ibool log_block_get_flush_bit(const byte *log_block)
UNIV_INTERN void log_buffer_sync_in_background(ibool flush)
UNIV_INTERN void logs_empty_and_mark_files_at_shutdown(void)
UNIV_INLINE ulint log_block_get_checkpoint_no(const byte *log_block)
UNIV_INTERN void log_group_read_checkpoint_info(log_group_t *group, ulint field)
ib_uint64_t flushed_to_disk_lsn
UNIV_INTERN void log_init(void)
UNIV_INTERN void log_group_read_log_seg(ulint type, byte *buf, log_group_t *group, ib_uint64_t start_lsn, ib_uint64_t end_lsn)
UNIV_INTERN void log_print(FILE *file)
UNIV_INLINE ulint log_block_convert_lsn_to_no(ib_uint64_t lsn)
UNIV_INLINE void log_block_init_in_old_format(byte *log_block, ib_uint64_t lsn)
ulint adm_checkpoint_interval
UNIV_INTERN void log_group_write_buf(log_group_t *group, byte *buf, ulint len, ib_uint64_t start_lsn, ulint new_data_offset)
UNIV_INTERN ulint log_archive_stop(void)
UNIV_INTERN ulint log_archive_archivelog(void)
UNIV_INTERN void log_write_up_to(ib_uint64_t lsn, ulint wait, ibool flush_to_disk)
ib_uint64_t next_checkpoint_no
ulint max_checkpoint_age_async
UNIV_INTERN ulint log_archive_noarchivelog(void)
UNIV_INTERN void log_check_margins(void)
UNIV_INLINE ib_uint64_t log_get_lsn(void)
UNIV_INLINE void log_block_set_first_rec_group(byte *log_block, ulint offset)
ulint max_modified_age_async
byte * checkpoint_buf_ptr
typedef UT_LIST_BASE_NODE_T(mutex_t) ut_list_base_node_t
UNIV_INLINE void log_block_set_data_len(byte *log_block, ulint len)
UNIV_INLINE void log_free_check(void)
UNIV_INLINE ulint log_block_get_data_len(const byte *log_block)
UNIV_INTERN ibool log_peek_lsn(ib_uint64_t *lsn)
UNIV_INTERN void log_buffer_flush_to_disk(void)
UNIV_INTERN ibool log_archive_do(ibool sync, ulint *n_bytes)
ibool check_flush_or_checkpoint
UNIV_INTERN void log_group_init(ulint id, ulint n_files, ulint file_size, ulint space_id, ulint archive_space_id)
UNIV_INTERN void log_fsp_current_free_limit_set_and_checkpoint(ulint limit)
#define UT_LIST_NODE_T(TYPE)
UNIV_INLINE void log_block_init(byte *log_block, ib_uint64_t lsn)
UNIV_INLINE ulint log_block_get_first_rec_group(const byte *log_block)
UNIV_INTERN void log_refresh_stats(void)
ib_uint64_t next_checkpoint_lsn
UNIV_INLINE ib_uint64_t log_reserve_and_write_fast(const void *str, ulint len, ib_uint64_t *start_lsn)
ib_uint64_t written_to_all_lsn
UNIV_INTERN ulint log_archive_start(void)
UNIV_INLINE ulint log_block_get_checksum(const byte *log_block)
UNIV_INTERN ib_uint64_t log_reserve_and_open(ulint len)
ib_uint64_t last_checkpoint_lsn
os_event_t one_flushed_event
UNIV_INTERN ulint log_group_get_capacity(const log_group_t *group)
UNIV_INTERN void log_group_set_fields(log_group_t *group, ib_uint64_t lsn)
UNIV_INTERN void log_archived_file_name_gen(char *buf, ulint id, ulint file_no)
UNIV_INTERN ib_uint64_t log_close(void)
ib_uint64_t current_flush_lsn
UNIV_INTERN ibool log_checkpoint(ibool sync, ibool write_always)
byte ** file_header_bufs_ptr
os_event_t no_flush_event
UNIV_INTERN void log_groups_write_checkpoint_info(void)
UNIV_INTERN ibool log_preflush_pool_modified_pages(ib_uint64_t new_oldest, ibool sync)
UNIV_INLINE ulint log_block_calc_checksum(const byte *block)
UNIV_INLINE void log_release(void)
UNIV_INLINE ulint log_block_get_hdr_no(const byte *log_block)
ulint n_pending_checkpoint_writes
UNIV_INTERN void log_checkpoint_get_nth_group_info(const byte *buf, ulint n, ulint *file_no, ulint *offset)
mutex_t log_flush_order_mutex
time_t last_printout_time
rw_lock_t checkpoint_lock
ulint max_modified_age_sync
UNIV_INTERN void log_write_low(byte *str, ulint str_len)