Code review comment for lp:~vlad-lesin/percona-server/5.5-bug801989

Revision history for this message
Alexey Kopytov (akopytov) wrote :

Vlad, some comments on the patch:

  - I don't think we should crash the server after failing to set
    O_DIRECT. This way you are essentially resurrecting
    http://bugs.mysql.com/bug.php?id=26662

    The warning is relatively harmless, the InnoDB will just do buffered
    I/O on file systems that do not support O_DIRECT such as tmpfs.

    It only becomes a problem in XtraDB in case of ALL_O_DIRECT, because
    in this case XtraDB does not flush the log files, even if O_DIRECT
    fails (the correctness of not doing fsync() when O_DIRECT succeeds
    is a separate issue).

    So what we should do is to disable ALL_O_DIRECT (i.e. O_DIRECT for
    log files) and switch to O_DIRECT (i.e. O_DIRECT on data files only)
    if setting O_DIRECT on a log file fails. That is, essentially use
    the fix suggested by Yasufumi, but perhaps a cleaner variant,
    i.e. in os_file_create_func() check the value returned by
    os_file_set_nocache() introduced by your patch, and if it failed, do
    srv_unix_file_flush_method = SRV_UNIX_O_DIRECT). This way we will at
    least do fsync() on log files when setting O_DIRECT failed.

  - the bug also affects 5.1. I have updated the bug accordingly

  - after fixing the above, please put description to revision comments
    in addition to MP. Note that it's ok to reference bug numbers by
    their number (e.g. "bug #...") rather than by the full URL. It's
    unambiguous, but shorter

  - to answer your concerns about the test case, I don't think we should
    have a regression test for this fix.

review: Needs Fixing

« Back to merge proposal