summaryrefslogtreecommitdiff
path: root/storage/xtradb/include/log0log.ic
diff options
context:
space:
mode:
Diffstat (limited to 'storage/xtradb/include/log0log.ic')
-rw-r--r--storage/xtradb/include/log0log.ic168
1 files changed, 89 insertions, 79 deletions
diff --git a/storage/xtradb/include/log0log.ic b/storage/xtradb/include/log0log.ic
index 85eebda4942..d071985982a 100644
--- a/storage/xtradb/include/log0log.ic
+++ b/storage/xtradb/include/log0log.ic
@@ -16,7 +16,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
-/******************************************************
+/**************************************************//**
+@file include/log0log.ic
Database log
Created 12/9/1995 Heikki Tuuri
@@ -26,28 +27,27 @@ Created 12/9/1995 Heikki Tuuri
#include "mach0data.h"
#include "mtr0mtr.h"
-/**********************************************************
+/******************************************************//**
Checks by parsing that the catenated log segment for a single mtr is
consistent. */
UNIV_INTERN
ibool
log_check_log_recs(
/*===============*/
- byte* buf, /* in: pointer to the start of
+ byte* buf, /*!< in: pointer to the start of
the log segment in the
log_sys->buf log buffer */
- ulint len, /* in: segment length in bytes */
- ib_uint64_t buf_start_lsn); /* in: buffer start lsn */
+ ulint len, /*!< in: segment length in bytes */
+ ib_uint64_t buf_start_lsn); /*!< in: buffer start lsn */
-/****************************************************************
-Gets a log block flush bit. */
+/************************************************************//**
+Gets a log block flush bit.
+@return TRUE if this block was the first to be written in a log flush */
UNIV_INLINE
ibool
log_block_get_flush_bit(
/*====================*/
- /* out: TRUE if this block was the first
- to be written in a log flush */
- byte* log_block) /* in: log block */
+ const byte* log_block) /*!< in: log block */
{
if (LOG_BLOCK_FLUSH_BIT_MASK
& mach_read_from_4(log_block + LOG_BLOCK_HDR_NO)) {
@@ -58,14 +58,14 @@ log_block_get_flush_bit(
return(FALSE);
}
-/****************************************************************
+/************************************************************//**
Sets the log block flush bit. */
UNIV_INLINE
void
log_block_set_flush_bit(
/*====================*/
- byte* log_block, /* in: log block */
- ibool val) /* in: value to set */
+ byte* log_block, /*!< in/out: log block */
+ ibool val) /*!< in: value to set */
{
ulint field;
@@ -80,29 +80,28 @@ log_block_set_flush_bit(
mach_write_to_4(log_block + LOG_BLOCK_HDR_NO, field);
}
-/****************************************************************
-Gets a log block number stored in the header. */
+/************************************************************//**
+Gets a log block number stored in the header.
+@return log block number stored in the block header */
UNIV_INLINE
ulint
log_block_get_hdr_no(
/*=================*/
- /* out: log block number stored in the block
- header */
- byte* log_block) /* in: log block */
+ const byte* log_block) /*!< in: log block */
{
return(~LOG_BLOCK_FLUSH_BIT_MASK
& mach_read_from_4(log_block + LOG_BLOCK_HDR_NO));
}
-/****************************************************************
+/************************************************************//**
Sets the log block number stored in the header; NOTE that this must be set
before the flush bit! */
UNIV_INLINE
void
log_block_set_hdr_no(
/*=================*/
- byte* log_block, /* in: log block */
- ulint n) /* in: log block number: must be > 0 and
+ byte* log_block, /*!< in/out: log block */
+ ulint n) /*!< in: log block number: must be > 0 and
< LOG_BLOCK_FLUSH_BIT_MASK */
{
ut_ad(n > 0);
@@ -111,101 +110,99 @@ log_block_set_hdr_no(
mach_write_to_4(log_block + LOG_BLOCK_HDR_NO, n);
}
-/****************************************************************
-Gets a log block data length. */
+/************************************************************//**
+Gets a log block data length.
+@return log block data length measured as a byte offset from the block start */
UNIV_INLINE
ulint
log_block_get_data_len(
/*===================*/
- /* out: log block data length measured as a
- byte offset from the block start */
- byte* log_block) /* in: log block */
+ const byte* log_block) /*!< in: log block */
{
return(mach_read_from_2(log_block + LOG_BLOCK_HDR_DATA_LEN));
}
-/****************************************************************
+/************************************************************//**
Sets the log block data length. */
UNIV_INLINE
void
log_block_set_data_len(
/*===================*/
- byte* log_block, /* in: log block */
- ulint len) /* in: data length */
+ byte* log_block, /*!< in/out: log block */
+ ulint len) /*!< in: data length */
{
mach_write_to_2(log_block + LOG_BLOCK_HDR_DATA_LEN, len);
}
-/****************************************************************
-Gets a log block first mtr log record group offset. */
+/************************************************************//**
+Gets a log block first mtr log record group offset.
+@return first mtr log record group byte offset from the block start, 0
+if none */
UNIV_INLINE
ulint
log_block_get_first_rec_group(
/*==========================*/
- /* out: first mtr log record group byte offset
- from the block start, 0 if none */
- byte* log_block) /* in: log block */
+ const byte* log_block) /*!< in: log block */
{
return(mach_read_from_2(log_block + LOG_BLOCK_FIRST_REC_GROUP));
}
-/****************************************************************
+/************************************************************//**
Sets the log block first mtr log record group offset. */
UNIV_INLINE
void
log_block_set_first_rec_group(
/*==========================*/
- byte* log_block, /* in: log block */
- ulint offset) /* in: offset, 0 if none */
+ byte* log_block, /*!< in/out: log block */
+ ulint offset) /*!< in: offset, 0 if none */
{
mach_write_to_2(log_block + LOG_BLOCK_FIRST_REC_GROUP, offset);
}
-/****************************************************************
-Gets a log block checkpoint number field (4 lowest bytes). */
+/************************************************************//**
+Gets a log block checkpoint number field (4 lowest bytes).
+@return checkpoint no (4 lowest bytes) */
UNIV_INLINE
ulint
log_block_get_checkpoint_no(
/*========================*/
- /* out: checkpoint no (4 lowest bytes) */
- byte* log_block) /* in: log block */
+ const byte* log_block) /*!< in: log block */
{
return(mach_read_from_4(log_block + LOG_BLOCK_CHECKPOINT_NO));
}
-/****************************************************************
+/************************************************************//**
Sets a log block checkpoint number field (4 lowest bytes). */
UNIV_INLINE
void
log_block_set_checkpoint_no(
/*========================*/
- byte* log_block, /* in: log block */
- ib_uint64_t no) /* in: checkpoint no */
+ byte* log_block, /*!< in/out: log block */
+ ib_uint64_t no) /*!< in: checkpoint no */
{
mach_write_to_4(log_block + LOG_BLOCK_CHECKPOINT_NO, (ulint) no);
}
-/****************************************************************
-Converts a lsn to a log block number. */
+/************************************************************//**
+Converts a lsn to a log block number.
+@return log block number, it is > 0 and <= 1G */
UNIV_INLINE
ulint
log_block_convert_lsn_to_no(
/*========================*/
- /* out: log block number,
- it is > 0 and <= 1G */
- ib_uint64_t lsn) /* in: lsn of a byte within the block */
+ ib_uint64_t lsn) /*!< in: lsn of a byte within the block */
{
return(((ulint) (lsn / OS_FILE_LOG_BLOCK_SIZE) & 0x3FFFFFFFUL) + 1);
}
-/****************************************************************
-Calculates the checksum for a log block. */
+/************************************************************//**
+Calculates the checksum for a log block.
+@return checksum */
UNIV_INLINE
ulint
log_block_calc_checksum(
/*====================*/
- /* out: checksum */
- const byte* block) /* in: log block */
+ const byte* block) /*!< in: log block */
{
ulint sum;
ulint sh;
@@ -228,41 +225,41 @@ log_block_calc_checksum(
return(sum);
}
-/****************************************************************
-Gets a log block checksum field value. */
+/************************************************************//**
+Gets a log block checksum field value.
+@return checksum */
UNIV_INLINE
ulint
log_block_get_checksum(
/*===================*/
- /* out: checksum */
- const byte* log_block) /* in: log block */
+ const byte* log_block) /*!< in: log block */
{
return(mach_read_from_4(log_block + OS_FILE_LOG_BLOCK_SIZE
- LOG_BLOCK_CHECKSUM));
}
-/****************************************************************
+/************************************************************//**
Sets a log block checksum field value. */
UNIV_INLINE
void
log_block_set_checksum(
/*===================*/
- byte* log_block, /* in: log block */
- ulint checksum) /* in: checksum */
+ byte* log_block, /*!< in/out: log block */
+ ulint checksum) /*!< in: checksum */
{
mach_write_to_4(log_block + OS_FILE_LOG_BLOCK_SIZE
- LOG_BLOCK_CHECKSUM,
checksum);
}
-/****************************************************************
+/************************************************************//**
Initializes a log block in the log buffer. */
UNIV_INLINE
void
log_block_init(
/*===========*/
- byte* log_block, /* in: pointer to the log buffer */
- ib_uint64_t lsn) /* in: lsn within the log block */
+ byte* log_block, /*!< in: pointer to the log buffer */
+ ib_uint64_t lsn) /*!< in: lsn within the log block */
{
ulint no;
@@ -276,15 +273,15 @@ log_block_init(
log_block_set_first_rec_group(log_block, 0);
}
-/****************************************************************
+/************************************************************//**
Initializes a log block in the log buffer in the old format, where there
was no checksum yet. */
UNIV_INLINE
void
log_block_init_in_old_format(
/*=========================*/
- byte* log_block, /* in: pointer to the log buffer */
- ib_uint64_t lsn) /* in: lsn within the log block */
+ byte* log_block, /*!< in: pointer to the log buffer */
+ ib_uint64_t lsn) /*!< in: lsn within the log block */
{
ulint no;
@@ -299,19 +296,19 @@ log_block_init_in_old_format(
log_block_set_first_rec_group(log_block, 0);
}
-/****************************************************************
+#ifndef UNIV_HOTBACKUP
+/************************************************************//**
Writes to the log the string given. The log must be released with
-log_release. */
+log_release.
+@return end lsn of the log record, zero if did not succeed */
UNIV_INLINE
ib_uint64_t
log_reserve_and_write_fast(
/*=======================*/
- /* out: end lsn of the log record,
- zero if did not succeed */
- byte* str, /* in: string */
- ulint len, /* in: string length */
- ib_uint64_t* start_lsn,/* out: start lsn of the log record */
- ibool* success)/* out: TRUE if success */
+ byte* str, /*!< in: string */
+ ulint len, /*!< in: string length */
+ ib_uint64_t* start_lsn,/*!< out: start lsn of the log record */
+ ibool* success)/*!< out: TRUE if success */
{
log_t* log = log_sys;
ulint data_len;
@@ -359,7 +356,7 @@ log_reserve_and_write_fast(
return(lsn);
}
-/***************************************************************************
+/***********************************************************************//**
Releases the log mutex. */
UNIV_INLINE
void
@@ -369,13 +366,13 @@ log_release(void)
mutex_exit(&(log_sys->mutex));
}
-/****************************************************************
-Gets the current lsn. */
+/************************************************************//**
+Gets the current lsn.
+@return current lsn */
UNIV_INLINE
ib_uint64_t
log_get_lsn(void)
/*=============*/
- /* out: current lsn */
{
ib_uint64_t lsn;
@@ -388,7 +385,19 @@ log_get_lsn(void)
return(lsn);
}
-/***************************************************************************
+/****************************************************************
+Gets the log group capacity. It is OK to read the value without
+holding log_sys->mutex because it is constant.
+@return log group capacity */
+UNIV_INLINE
+ulint
+log_get_capacity(void)
+/*==================*/
+{
+ return(log_sys->log_group_capacity);
+}
+
+/***********************************************************************//**
Checks if there is need for a log buffer flush or a new checkpoint, and does
this if yes. Any database operation should call this when it has modified
more than about 4 pages. NOTE that this function may only be called when the
@@ -405,3 +414,4 @@ log_free_check(void)
log_check_margins();
}
}
+#endif /* !UNIV_HOTBACKUP */