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
f3063299
Commit
f3063299
authored
Jun 08, 2012
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
apply mysql fix for bug#58421 to XtraDB
parent
c9780ba3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
99 additions
and
14 deletions
+99
-14
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+1
-13
storage/xtradb/os/os0file.c
storage/xtradb/os/os0file.c
+98
-1
No files found.
mysql-test/mysql-test-run.pl
View file @
f3063299
...
...
@@ -3464,12 +3464,6 @@ sub mysql_install_db {
mtr_add_arg
(
$args
,
"
--lc-messages-dir=%s
",
$install_lang
);
mtr_add_arg
(
$args
,
"
--character-sets-dir=%s
",
$install_chsdir
);
# On some old linux kernels, aio on tmpfs is not supported
# Remove this if/when Bug #58421 fixes this in the server
if
(
$^O
eq
"
linux
"
&&
$opt_mem
)
{
mtr_add_arg
(
$args
,
"
--loose-skip-innodb-use-native-aio
");
}
# InnoDB arguments that affect file location and sizes may
# need to be given to the bootstrap process as well as the
# server process.
...
...
@@ -4743,6 +4737,7 @@ sub extract_warning_lines ($$) {
qr|Access denied for user|
,
qr|Aborted connection|
,
qr|table.*is full|
,
qr|Linux Native AIO|
,
# warning that aio does not work on /dev/shm
);
my
$matched_lines
=
[]
;
...
...
@@ -5246,13 +5241,6 @@ sub mysqld_arguments ($$$) {
mtr_add_arg
(
$args
,
"
--user=root
");
}
# On some old linux kernels, aio on tmpfs is not supported
# Remove this if/when Bug #58421 fixes this in the server
if
(
$^O
eq
"
linux
"
&&
$opt_mem
)
{
mtr_add_arg
(
$args
,
"
--loose-skip-innodb-use-native-aio
");
}
if
(
!
using_extern
()
and
!
$opt_user_args
)
{
# Turn on logging to file
...
...
storage/xtradb/os/os0file.c
View file @
f3063299
...
...
@@ -3318,7 +3318,91 @@ os_aio_linux_create_io_ctx(
fprintf
(
stderr
,
"InnoDB: You can disable Linux Native AIO by"
" setting innodb_native_aio = off in my.cnf
\n
"
);
" setting innodb_use_native_aio = 0 in my.cnf
\n
"
);
return
(
FALSE
);
}
/******************************************************************//**
Checks if the system supports native linux aio. On some kernel
versions where native aio is supported it won't work on tmpfs. In such
cases we can't use native aio as it is not possible to mix simulated
and native aio.
@return: TRUE if supported, FALSE otherwise. */
static
ibool
os_aio_native_aio_supported
(
void
)
/*=============================*/
{
int
fd
;
byte
*
buf
;
byte
*
ptr
;
struct
io_event
io_event
;
io_context_t
io_ctx
;
struct
iocb
iocb
;
struct
iocb
*
p_iocb
;
int
err
;
if
(
!
os_aio_linux_create_io_ctx
(
1
,
&
io_ctx
))
{
/* The platform does not support native aio. */
return
(
FALSE
);
}
/* Now check if tmpdir supports native aio ops. */
fd
=
innobase_mysql_tmpfile
();
if
(
fd
<
0
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Error: unable to create "
"temp file to check native AIO support.
\n
"
);
return
(
FALSE
);
}
memset
(
&
io_event
,
0x0
,
sizeof
(
io_event
));
buf
=
(
byte
*
)
ut_malloc
(
UNIV_PAGE_SIZE
*
2
);
ptr
=
(
byte
*
)
ut_align
(
buf
,
UNIV_PAGE_SIZE
);
/* Suppress valgrind warning. */
memset
(
buf
,
0x00
,
UNIV_PAGE_SIZE
*
2
);
memset
(
&
iocb
,
0x0
,
sizeof
(
iocb
));
p_iocb
=
&
iocb
;
io_prep_pwrite
(
p_iocb
,
fd
,
ptr
,
UNIV_PAGE_SIZE
,
0
);
err
=
io_submit
(
io_ctx
,
1
,
&
p_iocb
);
if
(
err
>=
1
)
{
/* Now collect the submitted IO request. */
err
=
io_getevents
(
io_ctx
,
1
,
1
,
&
io_event
,
NULL
);
}
ut_free
(
buf
);
close
(
fd
);
switch
(
err
)
{
case
1
:
return
(
TRUE
);
case
-
EINVAL
:
case
-
ENOSYS
:
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Error: Linux Native AIO is not"
" supported on tmpdir.
\n
"
"InnoDB: You can either move tmpdir to a"
" file system that supports native AIO
\n
"
"InnoDB: or you can set"
" innodb_use_native_aio to FALSE to avoid"
" this message.
\n
"
);
/* fall through. */
default:
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Error: Linux Native AIO check"
" on tmpdir returned error[%d]
\n
"
,
-
err
);
}
return
(
FALSE
);
}
#endif
/* LINUX_NATIVE_AIO */
...
...
@@ -3458,6 +3542,19 @@ os_aio_init(
os_io_init_simple
();
#if defined(LINUX_NATIVE_AIO)
/* Check if native aio is supported on this system and tmpfs */
if
(
srv_use_native_aio
&&
!
os_aio_native_aio_supported
())
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
" InnoDB: Warning: Linux Native AIO"
" disabled.
\n
"
);
srv_use_native_aio
=
FALSE
;
}
#endif
/* LINUX_NATIVE_AIO */
for
(
i
=
0
;
i
<
n_segments
;
i
++
)
{
srv_set_io_thread_op_info
(
i
,
"not started yet"
);
}
...
...
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