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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
774fae9c
Commit
774fae9c
authored
May 15, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/alexi/innodb/mysql-4.1-ss29
parents
d388da98
8069b05d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
25 deletions
+40
-25
innobase/os/os0file.c
innobase/os/os0file.c
+38
-25
sql/ha_innodb.cc
sql/ha_innodb.cc
+2
-0
No files found.
innobase/os/os0file.c
View file @
774fae9c
...
@@ -3613,6 +3613,37 @@ os_aio_posix_handle(
...
@@ -3613,6 +3613,37 @@ os_aio_posix_handle(
}
}
#endif
#endif
/**************************************************************************
Do a 'last millisecond' check that the page end is sensible;
reported page checksum errors from Linux seem to wipe over the page end. */
static
void
os_file_check_page_trailers
(
/*========================*/
byte
*
combined_buf
,
/* in: combined write buffer */
ulint
total_len
)
/* in: size of combined_buf, in bytes
(a multiple of UNIV_PAGE_SIZE) */
{
ulint
len
;
for
(
len
=
0
;
len
+
UNIV_PAGE_SIZE
<=
total_len
;
len
+=
UNIV_PAGE_SIZE
)
{
byte
*
buf
=
combined_buf
+
len
;
if
(
memcmp
(
buf
+
(
FIL_PAGE_LSN
+
4
),
buf
+
(
UNIV_PAGE_SIZE
-
FIL_PAGE_END_LSN_OLD_CHKSUM
+
4
),
4
))
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: ERROR: The page to be written seems corrupt!
\n
"
"InnoDB: Writing a block of %lu bytes, currently at offset %lu
\n
"
,
(
ulong
)
total_len
,
(
ulong
)
len
);
buf_page_print
(
buf
);
fprintf
(
stderr
,
"InnoDB: ERROR: The page to be written seems corrupt!
\n
"
);
}
}
}
/**************************************************************************
/**************************************************************************
Does simulated aio. This function should be called by an i/o-handler
Does simulated aio. This function should be called by an i/o-handler
thread. */
thread. */
...
@@ -3650,7 +3681,6 @@ os_aio_simulated_handle(
...
@@ -3650,7 +3681,6 @@ os_aio_simulated_handle(
ibool
ret
;
ibool
ret
;
ulint
n
;
ulint
n
;
ulint
i
;
ulint
i
;
ulint
len2
;
segment
=
os_aio_get_array_and_local_segment
(
&
array
,
global_segment
);
segment
=
os_aio_get_array_and_local_segment
(
&
array
,
global_segment
);
...
@@ -3857,33 +3887,16 @@ os_aio_simulated_handle(
...
@@ -3857,33 +3887,16 @@ os_aio_simulated_handle(
(
ulong
)
total_len
);
(
ulong
)
total_len
);
ut_error
;
ut_error
;
}
}
/* Do a 'last millisecond' check that the page end
os_file_check_page_trailers
(
combined_buf
,
total_len
);
is sensible; reported page checksum errors from
Linux seem to wipe over the page end */
for
(
len2
=
0
;
len2
+
UNIV_PAGE_SIZE
<=
total_len
;
len2
+=
UNIV_PAGE_SIZE
)
{
if
(
mach_read_from_4
(
combined_buf
+
len2
+
FIL_PAGE_LSN
+
4
)
!=
mach_read_from_4
(
combined_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
"
);
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
);
fprintf
(
stderr
,
"InnoDB: ERROR: The page to be written seems corrupt!
\n
"
);
}
}
}
}
ret
=
os_file_write
(
slot
->
name
,
slot
->
file
,
combined_buf
,
ret
=
os_file_write
(
slot
->
name
,
slot
->
file
,
combined_buf
,
slot
->
offset
,
slot
->
offset_high
,
total_len
);
slot
->
offset
,
slot
->
offset_high
,
total_len
);
if
(
array
==
os_aio_write_array
)
{
os_file_check_page_trailers
(
combined_buf
,
total_len
);
}
}
else
{
}
else
{
ret
=
os_file_read
(
slot
->
file
,
combined_buf
,
ret
=
os_file_read
(
slot
->
file
,
combined_buf
,
slot
->
offset
,
slot
->
offset_high
,
total_len
);
slot
->
offset
,
slot
->
offset_high
,
total_len
);
...
...
sql/ha_innodb.cc
View file @
774fae9c
...
@@ -3431,6 +3431,8 @@ ha_innobase::index_prev(
...
@@ -3431,6 +3431,8 @@ ha_innobase::index_prev(
mysql_byte
*
buf
)
/* in/out: buffer for previous row in MySQL
mysql_byte
*
buf
)
/* in/out: buffer for previous row in MySQL
format */
format */
{
{
statistic_increment
(
ha_read_prev_count
,
&
LOCK_status
);
return
(
general_fetch
(
buf
,
ROW_SEL_PREV
,
0
));
return
(
general_fetch
(
buf
,
ROW_SEL_PREV
,
0
));
}
}
...
...
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