Skip to content

Commit

Permalink
MDEV-26674 follow-up: Bless Linux 5.15.3
Browse files Browse the repository at this point in the history
In commit 1193a79 we
set innodb_use_native_aio=OFF when using io_uring
on a kernel where write requests could potentially be lost.

The last reproducible issue was fixed in Linux 5.16-rc1
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.16-rc1&id=d3e3c102d107bb84251455a298cf475f24bab995
and the fix was backported to 5.15.3.

Hence, using a 5.16 or later kernel should be fine.
The Debian kernel 5.15.0-1-amd64 (5.15.3-1) was tested.
On Debian, utsname::release or uname -r does not reflect the
exact minor version while utsname::version and uname -v does.

On Fedora however the utsname::version is rather different:

  $ uname -r
  5.14.20-200.fc34.x86_64
  $ uname -v
  #1 SMP Thu Nov 18 22:03:20 UTC 2021

As such we use the version, but fall back to the release if
there isn't the beginnings of a kernel version in the version.

Thanks to Daniel Black for reporting the Linux kernel bug and
Jens Axboe for actually fixing it.

Co-Authored-By: Daniel Black <daniel@mariadb.org>

Closes: #1953
  • Loading branch information
dr-m authored and grooverdan committed Nov 24, 2021
1 parent fcc8f48 commit de7db55
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion storage/innobase/handler/ha_innodb.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19396,8 +19396,15 @@ bool innodb_use_native_aio_default()
#ifdef HAVE_URING
utsname &u= uname_for_io_uring;
if (!uname(&u) && u.release[0] == '5' && u.release[1] == '.' &&
u.release[2] == '1' && u.release[3] > '0' && u.release[3] < '6')
u.release[2] == '1' && u.release[3] >= '1' && u.release[3] <= '5' &&
u.release[4] == '.')
{
if (u.release[3] == '5') {
const char *s= strstr(u.version, "5.15.");
if (s || (s= strstr(u.release, "5.15.")))
if ((s[5] >= '3' || s[6] >= '0'))
return true; /* 5.15.3 and later should be fine */
}
io_uring_may_be_unsafe= u.release;
return false; /* working around io_uring hangs (MDEV-26674) */
}
Expand Down

0 comments on commit de7db55

Please sign in to comment.