mariadb/storage/innobase
Daniel Black d78173828e MDEV-27900: aio handle partial reads/writes
As btrfs showed, a partial read of data in AIO /O_DIRECT circumstances can
really confuse MariaDB.

Filipe Manana (SuSE)[1] showed how database programmers can assume
O_DIRECT is all or nothing.

While a fix was done in the kernel side, we can do better in our code by
requesting that the rest of the block be read/written synchronously if
we do only get a partial read/write.

Per the APIs, a partial read/write can occur before an error, so
reattempting the request will leave the caller with a concrete error to
handle.

[1] https://lore.kernel.org/linux-btrfs/CABVffENfbsC6HjGbskRZGR2NvxbnQi17gAuW65eOM+QRzsr8Bg@mail.gmail.com/T/#mb2738e675e48e0e0778a2e8d1537dec5ec0d3d3a

Also spell synchronously correctly in other files.
2022-03-12 09:47:53 +11:00
..
btr Merge 10.4 into 10.5 2022-03-07 09:26:50 +02:00
buf MDEV-27900: aio handle partial reads/writes 2022-03-12 09:47:53 +11:00
data Merge remote-tracking branch 'upstream/10.4' into 10.5 2021-09-10 17:16:18 +03:00
dict Merge 10.4 into 10.5 2022-02-23 15:31:36 +02:00
eval
fil Merge branch 10.4 into 10.5 2021-12-26 12:51:04 +01:00
fsp Merge 10.4 into 10.5 2021-10-28 08:48:36 +03:00
fts Merge 10.4 into 10.5 2022-03-07 09:26:50 +02:00
fut
gis Merge branch '10.4' into 10.5 2022-02-01 20:33:04 +01:00
ha
handler Merge 10.4 into 10.5 2022-03-11 13:03:33 +02:00
ibuf Merge 10.3 into 10.4 2022-02-21 14:10:27 +03:00
include Merge 10.4 into 10.5 2022-03-07 17:16:11 +03:00
lock Merge 10.4 into 10.5 2022-03-07 17:16:11 +03:00
log Stabilize innodb.redo_log_during_checkpoint 2022-03-11 09:46:50 +02:00
mem
mtr MDEV-27716 mtr_t::commit() acquires log_sys.mutex when writing no log 2022-02-09 15:10:10 +02:00
mysql-test/storage_engine
os MDEV-27900: aio handle partial reads/writes 2022-03-12 09:47:53 +11:00
page MDEV-27059 page_zip_dir_insert() may corrupt ROW_FORMAT=COMPRESSED tables 2021-11-16 17:13:15 +02:00
pars Merge 10.4 into 10.5 2021-11-09 08:50:33 +02:00
que Merge 10.4 into 10.5 2021-01-11 16:29:51 +02:00
read Merge branch '10.3' into 10.4 2021-07-31 22:59:58 +02:00
rem Merge branch '10.4' into 10.5 2022-02-01 20:33:04 +01:00
row Merge 10.4 into 10.5 2022-03-07 09:26:50 +02:00
srv Merge branch '10.4' into 10.5 2022-02-01 20:33:04 +01:00
sync Merge 10.4 into 10.5 2022-02-25 13:27:41 +02:00
trx Merge fixup: -Wconversion 2022-02-28 18:16:47 +02:00
unittest MDEV-19522 fixup: Use correct printf format 2021-10-21 15:53:35 +03:00
ut Merge 10.4 into 10.5 2021-10-21 15:26:25 +03:00
.clang-format-old switch off storage/innobase/.clang-format: InnoDB uses a common formatting style for all new code 2021-03-17 11:01:15 +03:00
bzip2.cmake Add feature summary at the end of cmake. 2021-07-21 10:22:56 +03:00
CMakeLists.txt Merge branch '10.4' into 10.5 2022-02-01 20:33:04 +01:00
compile-innodb
COPYING.Google
COPYING.Percona
innodb.cmake Merge 10.4 into 10.5 2021-08-23 11:10:59 +03:00
lz4.cmake Add feature summary at the end of cmake. 2021-07-21 10:22:56 +03:00
lzma.cmake Add feature summary at the end of cmake. 2021-07-21 10:22:56 +03:00
lzo.cmake Add feature summary at the end of cmake. 2021-07-21 10:22:56 +03:00
plugin_exports
snappy.cmake Add feature summary at the end of cmake. 2021-07-21 10:22:56 +03:00