• Konstantin Khlebnikov's avatar
    This tries to address two issues: · a3d52a18
    Konstantin Khlebnikov authored
    (1) mkostemp with O_DIRECT in flags can fail, leaving a temporary file:
    
    Apparently, O_DIRECT is not working on top of LVM. The problem is
    in this case mkostemp() creates the temporary file but still returns
    an error, and the temp file is not removed:
    
     $ ls
     ioping  ioping.1  ioping.c  ioping.o  ioping.spec  Makefile
     $ strace ./ioping -D .
     ....
     open("./ioping.UFuMHz", O_RDWR|O_CREAT|O_EXCL|O_DIRECT, 0600) = -1 EINVAL (Invalid argument)
     ....
     $ ls
     ioping  ioping.1  ioping.c  ioping.o  ioping.UFuMHz  ioping.spec  Makefile
    
    Solution -- do not use flags, apply those later using fcntl()
    
    (2) While trying to rebuild on centos5:
    
     cc -c -o ioping.o ioping.c -std=c99 -g -Wall -Wextra -pedantic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
     ioping.c: In function 'main':
     ioping.c:369: warning: implicit declaration of function 'mkostemp'
    Signed-off-by: default avatarKir Kolyshkin <kir@openvz.org>
    
    a3d52a18
ioping.c 10.5 KB