Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.11.6, 10.6, 10.7(EOL), 10.8(EOL), 10.9(EOL), 10.10(EOL), 10.11, 11.0(EOL), 11.1(EOL), 11.2(EOL), 11.3(EOL), 11.4
-
Solaris 11.4/x86
Description
After upgrading MariaDB from 10.3.9 to 10.11.6, we got an excessive number of errors in the server logs:
```
2023-12-20 11:25:48 0 [ERROR] InnoDB: Failed to set DIRECTIO_ON on file ./mysql/gtid_slave_pos.ibd; OPEN: Inappropriate ioctl for device, continuing anyway.
```
It seems the general change of default for `innodb_flush_method` from `fsync` to `O_DIRECT` on every platform is ill-advised: `O_DIRECT` is *not* portable across Unix platforms, but is a Linux extensions that has been adopted by some non-Linux targets, but is certainly not POSIX.
While I can manually restore the default to `fsync` to avoid this flood of errors, `mysqld` should only change the default to `O_DIRECT` on targets where it's supported and known to work.
Attachments
Issue Links
- blocks
-
MDEV-33203 storage/innobase/os/os0file.cc doesn't compile on Solaris
- Closed
- is caused by
-
MDEV-24854 Change innodb_flush_method=O_DIRECT by default
- Closed
- relates to
-
MDEV-30136 Map innodb_flush_method to new settable Booleans innodb_{log,data}_file_{buffering,write_through}
- Closed
-
MDEV-33581 Modern versions of MariaDB no longer build on OpenBSD
- Closed