[MDEV-27322] Test innodb.doublewrite crashes when using innodb_flush_method=O_DIRECT Created: 2021-12-20 Updated: 2021-12-21 Resolved: 2021-12-21 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | N/A |
| Fix Version/s: | 10.8.0, 10.6.6, 10.7.2 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Marko Mäkelä | Assignee: | Thirunarayanan Balathandayuthapani |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | crash, recovery, regression | ||
| Issue Links: |
|
||||||||
| Description |
|
The test innodb.doublewrite fails if O_DIRECT is supported. (Do not use the --mem, or link a directory on a persistent file system to mysql-test/var.) This problem appears to be related to The invocations
work fine on 10.5. In
I think that we should attempt to write a complete page at a page size aligned offset, similar to Furthermore, any data files for ROW_FORMAT=COMPRESSED with a smaller page size than 4096 bytes must be opened with OS_DATA_FILE_NO_O_DIRECT. (But, that should not be the issue here, because my block device supports 512-byte O_DIRECT reads and writes.) |
| Comments |
| Comment by Marko Mäkelä [ 2021-12-21 ] |
|
The fix to the os_file_write() call looks OK to me. It will prevent the EINVAL error (22) for a write that violates the O_DIRECT constraints. But, can you please revert that fix for a while and fix the subsequent crash in the event that the deferred_spaces.deferred_dblwr() call failed? |
| Comment by Marko Mäkelä [ 2021-12-21 ] |
|
I tested that this failure was introduced by the fix of |