Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a1931a36
Commit
a1931a36
authored
Mar 16, 2004
by
marko@hundin.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge marko@build.mysql.com:/home/bk/mysql-4.0
into hundin.mysql.fi:/home/marko/l/mysql-4.0
parents
f6816f32
2c0cabd9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
14 deletions
+67
-14
innobase/include/log0log.h
innobase/include/log0log.h
+4
-0
innobase/include/log0log.ic
innobase/include/log0log.ic
+2
-0
innobase/log/log0log.c
innobase/log/log0log.c
+43
-12
innobase/log/log0recv.c
innobase/log/log0recv.c
+18
-2
No files found.
innobase/include/log0log.h
View file @
a1931a36
...
...
@@ -18,7 +18,9 @@ typedef struct log_struct log_t;
typedef
struct
log_group_struct
log_group_t
;
extern
ibool
log_do_write
;
#ifdef UNIV_LOG_DEBUG
extern
ibool
log_debug_writes
;
#endif
/* UNIV_LOG_DEBUG */
/* Wait modes for log_write_up_to */
#define LOG_NO_WAIT 91
...
...
@@ -713,11 +715,13 @@ struct log_struct{
ulint
max_buf_free
;
/* recommended maximum value of
buf_free, after which the buffer is
flushed */
#ifdef UNIV_LOG_DEBUG
ulint
old_buf_free
;
/* value of buf free when log was
last time opened; only in the debug
version */
dulint
old_lsn
;
/* value of lsn when log was last time
opened; only in the debug version */
#endif
/* UNIV_LOG_DEBUG */
ibool
check_flush_or_checkpoint
;
/* this is set to TRUE when there may
be need to flush the log buffer, or
...
...
innobase/include/log0log.ic
View file @
a1931a36
...
...
@@ -10,6 +10,7 @@ Created 12/9/1995 Heikki Tuuri
#include "mach0data.h"
#include "mtr0mtr.h"
#ifdef UNIV_LOG_DEBUG
/**********************************************************
Checks by parsing that the catenated log segment for a single mtr is
consistent. */
...
...
@@ -21,6 +22,7 @@ log_check_log_recs(
in the log_sys->buf log buffer */
ulint len, /* in: segment length in bytes */
dulint buf_start_lsn); /* in: buffer start lsn */
#endif /* UNIV_LOG_DEBUG */
/****************************************************************
Gets a log block flush bit. */
...
...
innobase/log/log0log.c
View file @
a1931a36
...
...
@@ -31,7 +31,9 @@ ulint log_fsp_current_free_limit = 0;
log_t
*
log_sys
=
NULL
;
ibool
log_do_write
=
TRUE
;
#ifdef UNIV_LOG_DEBUG
ibool
log_debug_writes
=
FALSE
;
#endif
/* UNIV_LOG_DEBUG */
/* These control how often we print warnings if the last checkpoint is too
old */
...
...
@@ -85,9 +87,8 @@ the previous */
Completes a checkpoint write i/o to a log file. */
static
void
log_io_complete_checkpoint
(
/*=======================*/
log_group_t
*
group
);
/* in: log group */
log_io_complete_checkpoint
(
void
);
/*============================*/
/**********************************************************
Completes an archiving i/o. */
static
...
...
@@ -931,10 +932,11 @@ log_group_check_flush_completion(
#endif
/* UNIV_SYNC_DEBUG */
if
(
!
log_sys
->
one_flushed
&&
group
->
n_pending_writes
==
0
)
{
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Log flushed first to group %lu
\n
"
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
log_sys
->
written_to_some_lsn
=
log_sys
->
write_lsn
;
log_sys
->
one_flushed
=
TRUE
;
...
...
@@ -942,10 +944,12 @@ log_group_check_flush_completion(
return
(
LOG_UNLOCK_NONE_FLUSHED_LOCK
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
&&
(
group
->
n_pending_writes
==
0
))
{
printf
(
"Log flushed to group %lu
\n
"
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
return
(
0
);
}
...
...
@@ -1021,7 +1025,15 @@ log_io_complete(
fil_flush
(
group
->
space_id
);
}
log_io_complete_checkpoint
(
group
);
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"Checkpoint info written to group %lu
\n
"
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
log_io_complete_checkpoint
();
return
;
}
...
...
@@ -1086,11 +1098,13 @@ log_group_file_header_flush(
dest_offset
=
nth_file
*
group
->
file_size
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Writing log file header to group %lu file %lu
\n
"
,
group
->
id
,
nth_file
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
log_do_write
)
{
log_sys
->
n_log_ios
++
;
...
...
@@ -1174,6 +1188,7 @@ loop:
write_len
=
len
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
...
...
@@ -1197,6 +1212,7 @@ loop:
+
i
*
OS_FILE_LOG_BLOCK_SIZE
));
}
}
#endif
/* UNIV_LOG_DEBUG */
/* Calculate the checksums for each log block and write them to
the trailer fields of the log blocks */
...
...
@@ -1324,6 +1340,7 @@ loop:
return
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Writing log from %lu %lu up to lsn %lu %lu
\n
"
,
ut_dulint_get_high
(
log_sys
->
written_to_all_lsn
),
...
...
@@ -1331,6 +1348,7 @@ loop:
ut_dulint_get_high
(
log_sys
->
lsn
),
ut_dulint_get_low
(
log_sys
->
lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
log_sys
->
n_pending_writes
++
;
...
...
@@ -1556,9 +1574,8 @@ log_complete_checkpoint(void)
Completes an asynchronous checkpoint info write i/o to a log file. */
static
void
log_io_complete_checkpoint
(
/*=======================*/
log_group_t
*
group
)
/* in: log group */
log_io_complete_checkpoint
(
void
)
/*============================*/
{
mutex_enter
(
&
(
log_sys
->
mutex
));
...
...
@@ -1566,10 +1583,6 @@ log_io_complete_checkpoint(
log_sys
->
n_pending_checkpoint_writes
--
;
if
(
log_debug_writes
)
{
printf
(
"Checkpoint info written to group %lu
\n
"
,
group
->
id
);
}
if
(
log_sys
->
n_pending_checkpoint_writes
==
0
)
{
log_complete_checkpoint
();
}
...
...
@@ -1894,12 +1907,14 @@ log_checkpoint(
log_sys
->
next_checkpoint_lsn
=
oldest_lsn
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Making checkpoint no %lu at lsn %lu %lu
\n
"
,
ut_dulint_get_low
(
log_sys
->
next_checkpoint_no
),
ut_dulint_get_high
(
oldest_lsn
),
ut_dulint_get_low
(
oldest_lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
log_groups_write_checkpoint_info
();
...
...
@@ -2279,9 +2294,11 @@ loop:
exit
(
1
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Created archive file %s
\n
"
,
name
);
}
#endif
/* UNIV_LOG_DEBUG */
ret
=
os_file_close
(
file_handle
);
...
...
@@ -2310,6 +2327,7 @@ loop:
len
=
group
->
file_size
-
(
next_offset
%
group
->
file_size
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving starting at lsn %lu %lu, len %lu to group %lu
\n
"
,
...
...
@@ -2317,6 +2335,7 @@ loop:
ut_dulint_get_low
(
start_lsn
),
len
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
log_sys
->
n_pending_archive_ios
++
;
...
...
@@ -2407,10 +2426,12 @@ log_archive_write_complete_groups(void)
trunc_files
=
n_files
-
1
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
&&
trunc_files
)
{
printf
(
"Complete file(s) archived to group %lu
\n
"
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
/* Calculate the archive file space start lsn */
start_lsn
=
ut_dulint_subtract
(
log_sys
->
next_archived_lsn
,
...
...
@@ -2433,9 +2454,11 @@ log_archive_write_complete_groups(void)
fil_space_truncate_start
(
group
->
archive_space_id
,
trunc_files
*
group
->
file_size
);
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving writes completed
\n
"
);
}
#endif
/* UNIV_LOG_DEBUG */
}
/**********************************************************
...
...
@@ -2452,9 +2475,11 @@ log_archive_check_completion_low(void)
if
(
log_sys
->
n_pending_archive_ios
==
0
&&
log_sys
->
archiving_phase
==
LOG_ARCHIVE_READ
)
{
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving read completed
\n
"
);
}
#endif
/* UNIV_LOG_DEBUG */
/* Archive buffer has now been read in: start archive writes */
...
...
@@ -2598,6 +2623,7 @@ loop:
log_sys
->
next_archived_lsn
=
limit_lsn
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Archiving from lsn %lu %lu to lsn %lu %lu
\n
"
,
ut_dulint_get_high
(
log_sys
->
archived_lsn
),
...
...
@@ -2605,6 +2631,7 @@ loop:
ut_dulint_get_high
(
limit_lsn
),
ut_dulint_get_low
(
limit_lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
/* Read the log segment to the archive buffer */
...
...
@@ -2703,11 +2730,13 @@ log_archive_close_groups(
group
->
archived_file_no
+=
2
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
printf
(
"Incrementing arch file no to %lu in log group %lu
\n
"
,
group
->
archived_file_no
+
2
,
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
}
}
...
...
@@ -3155,6 +3184,7 @@ loop:
ut_a
(
0
==
ut_dulint_cmp
(
lsn
,
log_sys
->
lsn
));
}
#ifdef UNIV_LOG_DEBUG
/**********************************************************
Checks by parsing that the catenated log segment for a single mtr is
consistent. */
...
...
@@ -3207,6 +3237,7 @@ log_check_log_recs(
return
(
TRUE
);
}
#endif
/* UNIV_LOG_DEBUG */
/**********************************************************
Peeks the current lsn. */
...
...
innobase/log/log0recv.c
View file @
a1931a36
...
...
@@ -471,6 +471,7 @@ recv_find_max_checkpoint(
log_group_read_checkpoint_info
(
group
,
field
);
if
(
!
recv_check_cp_is_consistent
(
buf
))
{
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Checkpoint in group %lu at %lu invalid, %lu
\n
"
,
...
...
@@ -479,6 +480,7 @@ recv_find_max_checkpoint(
+
LOG_CHECKPOINT_CHECKSUM_1
));
}
#endif
/* UNIV_LOG_DEBUG */
goto
not_consistent
;
}
...
...
@@ -492,11 +494,13 @@ recv_find_max_checkpoint(
checkpoint_no
=
mach_read_from_8
(
buf
+
LOG_CHECKPOINT_NO
);
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Checkpoint number %lu found in group %lu
\n
"
,
ut_dulint_get_low
(
checkpoint_no
),
group
->
id
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
ut_dulint_cmp
(
checkpoint_no
,
max_no
)
>=
0
)
{
*
max_group
=
group
;
...
...
@@ -1113,13 +1117,15 @@ recv_recover_page(
start_lsn
=
recv
->
start_lsn
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Applying log rec type %lu len %lu to space %lu page no %lu
\n
"
,
(
ulint
)
recv
->
type
,
recv
->
len
,
recv_addr
->
space
,
recv_addr
->
page_no
);
}
#endif
/* UNIV_LOG_DEBUG */
recv_parse_or_apply_log_rec_body
(
recv
->
type
,
buf
,
buf
+
recv
->
len
,
page
,
&
mtr
);
mach_write_to_8
(
page
+
UNIV_PAGE_SIZE
...
...
@@ -1944,11 +1950,13 @@ loop:
recv_sys
->
recovered_offset
+=
len
;
recv_sys
->
recovered_lsn
=
new_recovered_lsn
;
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Parsed a single log rec type %lu len %lu space %lu page no %lu
\n
"
,
(
ulint
)
type
,
len
,
space
,
page_no
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
type
==
MLOG_DUMMY_RECORD
)
{
/* Do nothing */
...
...
@@ -2007,12 +2015,14 @@ loop:
*/
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Parsed a multi log rec type %lu len %lu space %lu page no %lu
\n
"
,
(
ulint
)
type
,
len
,
space
,
page_no
);
}
#endif
/* UNIV_LOG_DEBUG */
total_len
+=
len
;
n_recs
++
;
...
...
@@ -2415,6 +2425,7 @@ recv_group_scan_log_recs(
start_lsn
=
end_lsn
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Scanned group %lu up to log sequence number %lu %lu
\n
"
,
...
...
@@ -2422,6 +2433,7 @@ recv_group_scan_log_recs(
ut_dulint_get_high
(
*
group_scanned_lsn
),
ut_dulint_get_low
(
*
group_scanned_lsn
));
}
#endif
/* UNIV_LOG_DEBUG */
}
/************************************************************
...
...
@@ -2745,10 +2757,12 @@ recv_recovery_from_checkpoint_finish(void)
recv_apply_hashed_log_recs
(
TRUE
);
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Log records applied to the database
\n
"
);
}
#endif
/* UNIV_LOG_DEBUG */
if
(
recv_needed_recovery
)
{
trx_sys_print_mysql_master_log_pos
();
...
...
@@ -3060,6 +3074,7 @@ ask_again:
break
;
}
#ifdef UNIV_LOG_DEBUG
if
(
log_debug_writes
)
{
fprintf
(
stderr
,
"InnoDB: Archive read starting at lsn %lu %lu, len %lu from file %s
\n
"
,
...
...
@@ -3067,6 +3082,7 @@ ask_again:
ut_dulint_get_low
(
start_lsn
),
len
,
name
);
}
#endif
/* UNIV_LOG_DEBUG */
fil_io
(
OS_FILE_READ
|
OS_FILE_LOG
,
TRUE
,
group
->
archive_space_id
,
read_offset
/
UNIV_PAGE_SIZE
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment