Percona Server with XtraDB

Clarify ALL_O_DIRECT relationship with fsync()

Reported by Laurynas Biveinis on 2013-09-24
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Percona Server
Status tracked in 5.6
5.1
Medium
Hrvoje Matijakovic
5.5
Medium
Hrvoje Matijakovic
5.6
Medium
Hrvoje Matijakovic

Bug Description

ALL_O_DIRECT is documented as "use O_DIRECT [to] open and flush both the data and the log files." [1]. Preceding it, O_DIRECT is documented as use "O_DIRECT (...) to open the data files; use fsync() to flush both the data and log files.", which is a copy-paste from Oracle docs [2] and is best rephrased.

ALL_O_DIRECT is missing a similar fsync() comment and source code reading tells that fsync() is skipped for all the log writes: both checkpoint info and log data. A similar setup for data files might result in issues with metadata being out of sync in case of crash (i.e. see 5.6 O_DIRECT_NO_FSYNC docs), but is probably safe for log files as they are fixed-size.

Thus let's fix the docs by 1) rewriting the O_DIRECT bit not to copy-paste Oracle docs; 2) adding to ALL_O_DIRECT that fsync() is used for data files and skipped for log files.

[1] http://www.percona.com/doc/percona-server/5.5/scalability/innodb_io_55.html
[2] https://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_flush_method

Tags: doc Edit Tag help
tags: added: doc
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers