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
15908c8b
Commit
15908c8b
authored
Jul 28, 2004
by
ingo@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/mydev/mysql-4.0
parents
4b42225c
fb0b0241
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
76 additions
and
17 deletions
+76
-17
configure.in
configure.in
+9
-16
innobase/buf/buf0flu.c
innobase/buf/buf0flu.c
+54
-0
innobase/include/page0page.ic
innobase/include/page0page.ic
+9
-1
innobase/os/os0file.c
innobase/os/os0file.c
+3
-0
innobase/row/row0sel.c
innobase/row/row0sel.c
+1
-0
No files found.
configure.in
View file @
15908c8b
...
@@ -936,17 +936,15 @@ esac
...
@@ -936,17 +936,15 @@ esac
MAX_C_OPTIMIZE
=
"-O3"
MAX_C_OPTIMIZE
=
"-O3"
MAX_CXX_OPTIMIZE
=
"-O3"
MAX_CXX_OPTIMIZE
=
"-O3"
fix_for_forte_x86
()
# workaround for Sun Forte/x86 see BUG#4681
{
case
$SYSTEM_TYPE
-
$MACHINE_TYPE
-
$ac_cv_prog_gcc
in
case
$MACHINE_TYPE
-
$ac_cv_prog_gcc
in
*
solaris
*
-i
?86-no
)
i?86-no
)
CFLAGS
=
"
$CFLAGS
-DBIG_FILES"
# workaround for Sun Forte/x86 see BUG#4681
CXXFLAGS
=
"
$CXXFLAGS
-DBIG_FILES"
CFLAGS
=
"
$CFLAGS
-DBIG_FILES"
;;
CXXFLAGS
=
"
$CXXFLAGS
-DBIG_FILES"
*
)
;;
;;
esac
*
)
;;
esac
}
case
$SYSTEM_TYPE
in
case
$SYSTEM_TYPE
in
*
solaris2.7
*
)
*
solaris2.7
*
)
...
@@ -962,7 +960,6 @@ case $SYSTEM_TYPE in
...
@@ -962,7 +960,6 @@ case $SYSTEM_TYPE in
sed
-e
"s|^#if[ ]*!defined(lint) && !defined(__lint)|#if !defined
\(
lint
\)
\&\&
!defined
\(
__lint
\)
\&\&
!defined
\(
getwc
\)
|"
< /usr/include/widec.h
>
include/widec.h
sed
-e
"s|^#if[ ]*!defined(lint) && !defined(__lint)|#if !defined
\(
lint
\)
\&\&
!defined
\(
__lint
\)
\&\&
!defined
\(
getwc
\)
|"
< /usr/include/widec.h
>
include/widec.h
CFLAGS
=
"
$CFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
CFLAGS
=
"
$CFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
fix_for_forte_x86
;;
;;
*
solaris2.8
*
)
*
solaris2.8
*
)
# Solaris 2.8 has a broken /usr/include/widec.h
# Solaris 2.8 has a broken /usr/include/widec.h
...
@@ -977,23 +974,19 @@ case $SYSTEM_TYPE in
...
@@ -977,23 +974,19 @@ case $SYSTEM_TYPE in
sed
-e
"s|^#if[ ]*!defined(__lint)|#if !defined
\(
__lint
\)
\&\&
!defined
\(
getwc
\)
|"
< /usr/include/widec.h
>
include/widec.h
sed
-e
"s|^#if[ ]*!defined(__lint)|#if !defined
\(
__lint
\)
\&\&
!defined
\(
getwc
\)
|"
< /usr/include/widec.h
>
include/widec.h
CFLAGS
=
"
$CFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
CFLAGS
=
"
$CFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_CURSES_H -I
$builddir
/include -DHAVE_RWLOCK_T"
fix_for_forte_x86
;;
;;
*
solaris2.5.1
*
)
*
solaris2.5.1
*
)
echo
"Enabling getpass() workaround for Solaris 2.5.1"
echo
"Enabling getpass() workaround for Solaris 2.5.1"
CFLAGS
=
"
$CFLAGS
-DHAVE_BROKEN_GETPASS -DSOLARIS -DHAVE_RWLOCK_T"
;
CFLAGS
=
"
$CFLAGS
-DHAVE_BROKEN_GETPASS -DSOLARIS -DHAVE_RWLOCK_T"
;
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_RWLOCK_T -DSOLARIS"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_RWLOCK_T -DSOLARIS"
fix_for_forte_x86
;;
;;
*
solaris
*
)
*
solaris
*
)
CFLAGS
=
"
$CFLAGS
-DHAVE_RWLOCK_T"
CFLAGS
=
"
$CFLAGS
-DHAVE_RWLOCK_T"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_RWLOCK_T"
CXXFLAGS
=
"
$CXXFLAGS
-DHAVE_RWLOCK_T"
fix_for_forte_x86
;;
;;
*
SunOS
*
)
*
SunOS
*
)
echo
"Enabling getpass() workaround for SunOS"
echo
"Enabling getpass() workaround for SunOS"
CFLAGS
=
"
$CFLAGS
-DHAVE_BROKEN_GETPASS -DSOLARIS"
;
CFLAGS
=
"
$CFLAGS
-DHAVE_BROKEN_GETPASS -DSOLARIS"
;
fix_for_forte_x86
;;
;;
*
hpux10.20
*
)
*
hpux10.20
*
)
echo
"Enabling workarounds for hpux 10.20"
echo
"Enabling workarounds for hpux 10.20"
...
...
innobase/buf/buf0flu.c
View file @
15908c8b
...
@@ -213,7 +213,9 @@ buf_flush_buffered_writes(void)
...
@@ -213,7 +213,9 @@ buf_flush_buffered_writes(void)
/*===========================*/
/*===========================*/
{
{
buf_block_t
*
block
;
buf_block_t
*
block
;
byte
*
write_buf
;
ulint
len
;
ulint
len
;
ulint
len2
;
ulint
i
;
ulint
i
;
if
(
trx_doublewrite
==
NULL
)
{
if
(
trx_doublewrite
==
NULL
)
{
...
@@ -240,6 +242,16 @@ buf_flush_buffered_writes(void)
...
@@ -240,6 +242,16 @@ buf_flush_buffered_writes(void)
block
=
trx_doublewrite
->
buf_block_arr
[
i
];
block
=
trx_doublewrite
->
buf_block_arr
[
i
];
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
if
(
mach_read_from_4
(
block
->
frame
+
FIL_PAGE_LSN
+
4
)
!=
mach_read_from_4
(
block
->
frame
+
UNIV_PAGE_SIZE
-
FIL_PAGE_END_LSN_OLD_CHKSUM
+
4
))
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
"InnoDB: The lsn fields do not match! Noticed in the buffer pool
\n
"
"InnoDB: before posting to the doublewrite buffer.
\n
"
);
}
if
(
block
->
check_index_page_at_flush
if
(
block
->
check_index_page_at_flush
&&
!
page_simple_validate
(
block
->
frame
))
{
&&
!
page_simple_validate
(
block
->
frame
))
{
...
@@ -268,6 +280,19 @@ buf_flush_buffered_writes(void)
...
@@ -268,6 +280,19 @@ buf_flush_buffered_writes(void)
trx_doublewrite
->
block1
,
0
,
len
,
trx_doublewrite
->
block1
,
0
,
len
,
(
void
*
)
trx_doublewrite
->
write_buf
,
NULL
);
(
void
*
)
trx_doublewrite
->
write_buf
,
NULL
);
write_buf
=
trx_doublewrite
->
write_buf
;
for
(
len2
=
0
;
len2
+
UNIV_PAGE_SIZE
<=
len
;
len2
+=
UNIV_PAGE_SIZE
)
{
if
(
mach_read_from_4
(
write_buf
+
len2
+
FIL_PAGE_LSN
+
4
)
!=
mach_read_from_4
(
write_buf
+
len2
+
UNIV_PAGE_SIZE
-
FIL_PAGE_END_LSN_OLD_CHKSUM
+
4
))
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
"InnoDB: The lsn fields do not match! Noticed in the doublewrite block1.
\n
"
);
}
}
if
(
trx_doublewrite
->
first_free
>
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
)
{
if
(
trx_doublewrite
->
first_free
>
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
)
{
len
=
(
trx_doublewrite
->
first_free
len
=
(
trx_doublewrite
->
first_free
-
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
)
*
UNIV_PAGE_SIZE
;
-
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
)
*
UNIV_PAGE_SIZE
;
...
@@ -278,6 +303,22 @@ buf_flush_buffered_writes(void)
...
@@ -278,6 +303,22 @@ buf_flush_buffered_writes(void)
(
void
*
)(
trx_doublewrite
->
write_buf
(
void
*
)(
trx_doublewrite
->
write_buf
+
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
*
UNIV_PAGE_SIZE
),
+
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
*
UNIV_PAGE_SIZE
),
NULL
);
NULL
);
write_buf
=
trx_doublewrite
->
write_buf
+
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
*
UNIV_PAGE_SIZE
;
for
(
len2
=
0
;
len2
+
UNIV_PAGE_SIZE
<=
len
;
len2
+=
UNIV_PAGE_SIZE
)
{
if
(
mach_read_from_4
(
write_buf
+
len2
+
FIL_PAGE_LSN
+
4
)
!=
mach_read_from_4
(
write_buf
+
len2
+
UNIV_PAGE_SIZE
-
FIL_PAGE_END_LSN_OLD_CHKSUM
+
4
))
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
"InnoDB: The lsn fields do not match! Noticed in the doublewrite block2.
\n
"
);
}
}
}
}
/* Now flush the doublewrite buffer data to disk */
/* Now flush the doublewrite buffer data to disk */
...
@@ -291,6 +332,19 @@ buf_flush_buffered_writes(void)
...
@@ -291,6 +332,19 @@ buf_flush_buffered_writes(void)
for
(
i
=
0
;
i
<
trx_doublewrite
->
first_free
;
i
++
)
{
for
(
i
=
0
;
i
<
trx_doublewrite
->
first_free
;
i
++
)
{
block
=
trx_doublewrite
->
buf_block_arr
[
i
];
block
=
trx_doublewrite
->
buf_block_arr
[
i
];
if
(
mach_read_from_4
(
block
->
frame
+
FIL_PAGE_LSN
+
4
)
!=
mach_read_from_4
(
block
->
frame
+
UNIV_PAGE_SIZE
-
FIL_PAGE_END_LSN_OLD_CHKSUM
+
4
))
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
"InnoDB: The lsn fields do not match! Noticed in the buffer pool
\n
"
"InnoDB: after posting and flushing the doublewrite buffer.
\n
"
"InnoDB: Page buf fix count %lu, io fix %lu, state %lu
\n
"
,
(
ulong
)
block
->
buf_fix_count
,
(
ulong
)
block
->
io_fix
,
(
ulong
)
block
->
state
);
}
fil_io
(
OS_FILE_WRITE
|
OS_AIO_SIMULATED_WAKE_LATER
,
fil_io
(
OS_FILE_WRITE
|
OS_AIO_SIMULATED_WAKE_LATER
,
FALSE
,
block
->
space
,
block
->
offset
,
0
,
UNIV_PAGE_SIZE
,
FALSE
,
block
->
space
,
block
->
offset
,
0
,
UNIV_PAGE_SIZE
,
(
void
*
)
block
->
frame
,
(
void
*
)
block
);
(
void
*
)
block
->
frame
,
(
void
*
)
block
);
...
...
innobase/include/page0page.ic
View file @
15908c8b
...
@@ -479,7 +479,15 @@ page_rec_get_next(
...
@@ -479,7 +479,15 @@ page_rec_get_next(
offs = rec_get_next_offs(rec);
offs = rec_get_next_offs(rec);
ut_a(offs < UNIV_PAGE_SIZE);
if (offs >= UNIV_PAGE_SIZE) {
fprintf(stderr,
"InnoDB: Next record offset is nonsensical %lu in record at offset %lu\n",
(ulong)offs, (ulong)(rec - page));
buf_page_print(page);
ut_a(0);
}
if (offs == 0) {
if (offs == 0) {
...
...
innobase/os/os0file.c
View file @
15908c8b
...
@@ -2736,6 +2736,9 @@ consecutive_loop:
...
@@ -2736,6 +2736,9 @@ consecutive_loop:
ut_print_timestamp
(
stderr
);
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
fprintf
(
stderr
,
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
);
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
);
fprintf
(
stderr
,
"InnoDB: Writing a block of %lu bytes, currently writing at offset %lu
\n
"
,
(
ulong
)
total_len
,
(
ulong
)
len2
);
buf_page_print
(
combined_buf
+
len2
);
buf_page_print
(
combined_buf
+
len2
);
fprintf
(
stderr
,
fprintf
(
stderr
,
"InnoDB: ERROR: The page to be written seems corrupt!
\n
"
);
"InnoDB: ERROR: The page to be written seems corrupt!
\n
"
);
...
...
innobase/row/row0sel.c
View file @
15908c8b
...
@@ -3088,6 +3088,7 @@ rec_loop:
...
@@ -3088,6 +3088,7 @@ rec_loop:
if
(
srv_force_recovery
==
0
||
moves_up
==
FALSE
)
{
if
(
srv_force_recovery
==
0
||
moves_up
==
FALSE
)
{
ut_print_timestamp
(
stderr
);
ut_print_timestamp
(
stderr
);
buf_page_print
(
buf_frame_align
(
rec
));
fprintf
(
stderr
,
fprintf
(
stderr
,
" InnoDB: Index corruption: rec offs %lu next offs %lu, page no %lu,
\n
"
" InnoDB: Index corruption: rec offs %lu next offs %lu, page no %lu,
\n
"
"InnoDB: "
,
"InnoDB: "
,
...
...
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