• Daniel Black's avatar
    MDEV-8743: use O_CLOEXEC MYSQL_LOG::open / TC_LOG_MMAP::open · 4ec7b840
    Daniel Black authored
    For galera compatibility, the main thing is to ensure the FD 1, 2 are
    not opened with O_CLOEXEC otherwise galera sst errors don't appear in
    the error.log
    
    Files without O_CLOEXEC from the test below:
    0 -> /dev/pts/9
    1 -> /tmp/error.log (intended)
    2 -> /tmp/error.log (intended)
    5 -> /tmp/datadir
    6 -> /tmp/datadir/aria_log.00000001
    (Innodb temp files)
    8 -> /tmp/ibIIrhFL (deleted)
    9 -> /tmp/ibfx1vai (deleted)
    10 -> /tmp/ibAQUKFO (deleted)
    11 -> /tmp/ibWBQSHR (deleted)
    15 -> /tmp/ibEXEcfo (deleted)
    
    20 -> /tmp/datadir/mysql/host.MYD
    22 -> /tmp/datadir/mysql/user.MYD
    ... (rest of MYD files)
    
    Test for this and the previous commit.
    
     sql/mysqld --skip-networking --datadir=/tmp/datadir --log-bin=/tmp/datadir/mysqlbin --socket /tmp/s.sock --lc-messages-dir=${PWD}/sql/share --verbose --log-error=/tmp/error.log --general-log-file=/tmp/general.log --general-log=1 --slow-query-log-file=/tmp/slow.log --slow-query-log=1
    180302 10:56:41 [Note] sql/mysqld (mysqld 5.5.60-MariaDB-wsrep) starting as process 26056 ...
    
    $ cd /proc/26056
    $ ls -la --sort=none fd
    total 0
    dr-x------. 2 dan dan  0 Mar  2 10:57 .
    dr-xr-xr-x. 9 dan dan  0 Mar  2 10:56 ..
    lrwx------. 1 dan dan 64 Mar  2 10:57 0 -> /dev/pts/9
    l-wx------. 1 dan dan 64 Mar  2 10:57 1 -> /tmp/error.log
    l-wx------. 1 dan dan 64 Mar  2 10:57 2 -> /tmp/error.log
    lrwx------. 1 dan dan 64 Mar  2 10:57 3 -> /tmp/datadir/mysqlbin.index
    lrwx------. 1 dan dan 64 Mar  2 10:57 4 -> /tmp/datadir/aria_log_control
    lr-x------. 1 dan dan 64 Mar  2 10:57 5 -> /tmp/datadir
    lrwx------. 1 dan dan 64 Mar  2 10:57 6 -> /tmp/datadir/aria_log.00000001
    lrwx------. 1 dan dan 64 Mar  2 10:57 7 -> /tmp/datadir/ibdata1
    lrwx------. 1 dan dan 64 Mar  2 10:57 8 -> /tmp/ibIIrhFL (deleted)
    lrwx------. 1 dan dan 64 Mar  2 10:57 9 -> /tmp/ibfx1vai (deleted)
    lrwx------. 1 dan dan 64 Mar  2 10:57 10 -> /tmp/ibAQUKFO (deleted)
    lrwx------. 1 dan dan 64 Mar  2 10:57 11 -> /tmp/ibWBQSHR (deleted)
    lrwx------. 1 dan dan 64 Mar  2 10:57 12 -> /tmp/datadir/ib_logfile0
    lrwx------. 1 dan dan 64 Mar  2 10:57 13 -> /tmp/datadir/ib_logfile1
    l-wx------. 1 dan dan 64 Mar  2 10:57 14 -> /tmp/slow.log
    lrwx------. 1 dan dan 64 Mar  2 10:57 15 -> /tmp/ibEXEcfo (deleted)
    l-wx------. 1 dan dan 64 Mar  2 10:57 16 -> /tmp/general.log
    lrwx------. 1 dan dan 64 Mar  2 10:57 17 -> socket:[1897356]
    lrwx------. 1 dan dan 64 Mar  2 10:57 18 -> socket:[45335]
    l-wx------. 1 dan dan 64 Mar  2 10:57 19 -> /tmp/datadir/mysqlbin.000004
    lrwx------. 1 dan dan 64 Mar  2 10:57 20 -> /tmp/datadir/mysql/host.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 21 -> /tmp/datadir/mysql/host.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 22 -> /tmp/datadir/mysql/user.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 23 -> /tmp/datadir/mysql/user.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 24 -> /tmp/datadir/mysql/db.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 25 -> /tmp/datadir/mysql/db.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 26 -> /tmp/datadir/mysql/proxies_priv.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 27 -> /tmp/datadir/mysql/proxies_priv.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 28 -> /tmp/datadir/mysql/tables_priv.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 29 -> /tmp/datadir/mysql/tables_priv.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 30 -> /tmp/datadir/mysql/columns_priv.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 31 -> /tmp/datadir/mysql/columns_priv.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 32 -> /tmp/datadir/mysql/procs_priv.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 33 -> /tmp/datadir/mysql/procs_priv.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 34 -> /tmp/datadir/mysql/servers.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 35 -> /tmp/datadir/mysql/servers.MYI
    lrwx------. 1 dan dan 64 Mar  2 10:57 36 -> /tmp/datadir/mysql/event.MYD
    lrwx------. 1 dan dan 64 Mar  2 10:57 37 -> /tmp/datadir/mysql/event.MYI
    
    O_CLOEXEC files are those with flags 02000000
    
    /usr/include/bits/fcntl-linux.h:# define __O_CLOEXEC   02000000
    /usr/include/bits/fcntl-linux.h:# define O_CLOEXEC      __O_CLOEXEC     /* Set close_on_exec.  */
    
    $ find fdinfo/ -type f -ls -exec cat {} \; | more
      1924720      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/0
    pos:    0
    flags:  0100002
    mnt_id: 25
      1924721      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/1
    pos:    9954
    flags:  0102001
    mnt_id: 82
      1924722      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/2
    pos:    10951
    flags:  0102001
    mnt_id: 82
      1924723      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/3
    pos:    116
    flags:  02100002
    mnt_id: 82
      1924724      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/4
    pos:    52
    flags:  0100002
    mnt_id: 82
    lock:   1: POSIX  ADVISORY  WRITE 26056 00:2c:1866365 0 EOF
      1924725      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/5
    pos:    0
    flags:  0100000
    mnt_id: 82
      1924726      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/6
    pos:    16384
    flags:  0100002
    mnt_id: 82
      1924727      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/7
    pos:    0
    flags:  02100002
    mnt_id: 82
    lock:   1: POSIX  ADVISORY  WRITE 26056 00:2c:1866491 0 EOF
      1924728      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/8
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924729      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/9
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924730      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/10
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924731      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/11
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924732      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/12
    pos:    0
    flags:  02100002
    mnt_id: 82
    lock:   1: POSIX  ADVISORY  WRITE 26056 00:2c:1866492 0 EOF
      1924733      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/13
    pos:    0
    flags:  02100002
    mnt_id: 82
    lock:   1: POSIX  ADVISORY  WRITE 26056 00:2c:1866493 0 EOF
      1924734      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/14
    pos:    763
    flags:  02102001
    mnt_id: 82
      1924735      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/15
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924736      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/16
    pos:    473
    flags:  02102001
    mnt_id: 82
      1924737      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/17
    pos:    0
    flags:  02000002
    mnt_id: 9
      1924738      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/18
    pos:    0
    flags:  02
    mnt_id: 9
      1924739      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/19
    pos:    245
    flags:  02100001
    mnt_id: 82
      1924740      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/20
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924741      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/21
    pos:    503
    flags:  0500002
    mnt_id: 82
      1924742      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/22
    pos:    324
    flags:  0100002
    mnt_id: 82
      1924743      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/23
    pos:    642
    flags:  0500002
    mnt_id: 82
      1924744      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/24
    pos:    880
    flags:  0100002
    mnt_id: 82
      1924745      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/25
    pos:    581
    flags:  0500002
    mnt_id: 82
      1924746      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/26
    pos:    1386
    flags:  0100002
    mnt_id: 82
      1924747      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/27
    pos:    498
    flags:  0500002
    mnt_id: 82
      1924748      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/28
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924749      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/29
    pos:    513
    flags:  0500002
    mnt_id: 82
      1924750      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/30
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924751      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/31
    pos:    494
    flags:  0500002
    mnt_id: 82
      1924752      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/32
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924753      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/33
    pos:    535
    flags:  0500002
    mnt_id: 82
      1924754      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/34
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924755      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/35
    pos:    396
    flags:  0500002
    mnt_id: 82
      1924756      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/36
    pos:    0
    flags:  0100002
    mnt_id: 82
      1924757      0 -r--------   1  dan      dan             0 Mar  2 10:57 fdinfo/37
    pos:    517
    flags:  0500002
    mnt_id: 82
    4ec7b840
my_symlink.c 5.99 KB