summaryrefslogtreecommitdiff
path: root/BUILD/compile-solaris-x86-32-debug
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-01-23 12:05:24 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2019-01-23 12:18:00 +0200
commit31d592ba7d3a2d2d227e5d4bf36f0866c9932c57 (patch)
tree3a388a682245a4a1f11de786f1c3b8689027f984 /BUILD/compile-solaris-x86-32-debug
parent6786fb004c5f88f2d4da6534c49456e90676274d (diff)
downloadmariadb-git-31d592ba7d3a2d2d227e5d4bf36f0866c9932c57.tar.gz
MDEV-18349 InnoDB file size changes are not safe when file system crashes
When InnoDB is invoking posix_fallocate() to extend data files, it was missing a call to fsync() to update the file system metadata. If file system recovery is needed, the file size could be incorrect. When the setting innodb_flush_method=O_DIRECT_NO_FSYNC that was introduced in MariaDB 10.0.11 (and MySQL 5.6) is enabled, InnoDB would wrongly skip fsync() after extending files. Furthermore, the merge commit d8b45b0c004edc0b91029b232d7cc9aad02cc822 inadvertently removed XtraDB error checking for posix_fallocate() which this fix is restoring. fil_flush(): Add the parameter bool metadata=false to request that fil_buffering_disabled() be ignored. fil_extend_space_to_desired_size(): Invoke fil_flush() with the extra parameter. After successful posix_fallocate(), invoke os_file_flush(). Note: The bookkeeping for fil_flush() would not be updated the posix_fallocate() code path, so the "redundant" fil_flush() should be a no-op.
Diffstat (limited to 'BUILD/compile-solaris-x86-32-debug')
0 files changed, 0 insertions, 0 deletions