Bug #74167 | call to posix_fallocate from fil_extend_space_to_desired_size fails | ||
---|---|---|---|
Submitted: | 1 Oct 2014 1:06 | Modified: | 22 Oct 2014 13:52 |
Reporter: | Mark Callaghan | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.7.5 | OS: | Linux |
Assigned to: | CPU Architecture: | Any | |
Tags: | innodb |
[1 Oct 2014 1:06]
Mark Callaghan
[1 Oct 2014 1:12]
Mark Callaghan
Per local kernel guru -- "ext3 doesn't support posix_fallocate. glibc used to emulate it by writing a bunch of zeros, but it doesn't support it"
[1 Oct 2014 9:28]
zhai weixiang
Found a changelog entry in 5.7.6 that may be related. http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-6.html InnoDB: A CREATE TABLE operation would fail with a table is full error when running a MySQL server with innodb_flush_method=O_DIRECT on a Linux system with an ext3 file system. The error is due to an internal posix_fallocate() failure that occurs when O_DIRECT is specified. To allow the file operation to proceed, the internal posix_fallocate() failure now prints an error message to the error log. (Bug #18903979)
[4 Oct 2014 14:35]
Mark Callaghan
Thanks for the search result. Sounds like this has been fixed in 5.7.6. The code listed above has this comment that makes me wary. Why do we need FusionIO specific code? /* This is required by FusionIO HW/Firmware */
[6 Oct 2014 17:27]
MySQL Verification Team
Hello Mark, Thanks for the report. Indeed, this is duplicate of internal bug "Bug 18903979 - THE TABLE IS FULL ERROR WHEN RUNNING ON EXT3 WITH O_DIRECT" which is fixed as of the upcoming 5.7.6 release. I'll check internally about the comment and keep you posted further on this. Thanks, Umesh
[7 Oct 2014 3:56]
Sunny Bains
The FusionIO comment can be ignored. The plan is to use posix_fallocate() instead of writing zeroes for SSDs in general. It just happens to be required for FusionIO HW. We need to handle the errors properly and fallback to writing zeroes as cunning plan B if the call fails.
[22 Oct 2014 13:52]
Erlend Dahl
Fixed in 5.7.6 under the heading of Bug#18903979, as mentioned above.