This tries to address two issues:
(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: Kir Kolyshkin <kir@openvz.org>
Showing
Please register or sign in to comment