summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSitsofe Wheeler <sitsofe@yahoo.com>2019-10-05 12:04:33 +0100
committerSitsofe Wheeler <sitsofe@yahoo.com>2019-10-06 07:33:36 +0100
commit44f668d7ba3d82c1218951b8c9ed058bedb89e17 (patch)
tree5bc3c36e2d98955e57a29ff8cf2ca8621bfa6fea
parent13e9c0b09c0c8d892b790aeaf736263dd76f2d2e (diff)
downloadfio-44f668d7ba3d82c1218951b8c9ed058bedb89e17.tar.gz
fio-44f668d7ba3d82c1218951b8c9ed058bedb89e17.tar.bz2
configure: stop enabling fdatasync on OSX
Change configure compile probes to fail on implicit declarations. This (correctly) stops us from enabling fdatasync on OSX which was problematic because we were actually calling a syscall stub with arguments different to what was declared in its prototype (see https://github.com/gbrault/picoc/issues/145#issuecomment-89734655 and https://gitlab.freedesktop.org/xdg/shared-mime-info/issues/7 ). Fixes: https://github.com/axboe/fio/issues/834 ("Drop macOS support for fdatasync") Signed-off-by: Sitsofe Wheeler <sitsofe@yahoo.com>
-rw-r--r--HOWTO2
-rwxr-xr-xconfigure4
-rw-r--r--fio.12
-rw-r--r--os/os-mac.h6
4 files changed, 4 insertions, 10 deletions
diff --git a/HOWTO b/HOWTO
index 4fef1504..96a047de 100644
--- a/HOWTO
+++ b/HOWTO
@@ -1279,7 +1279,7 @@ I/O type
.. option:: fdatasync=int
Like :option:`fsync` but uses :manpage:`fdatasync(2)` to only sync data and
- not metadata blocks. In Windows, FreeBSD, and DragonFlyBSD there is no
+ not metadata blocks. In Windows, FreeBSD, DragonFlyBSD or OSX there is no
:manpage:`fdatasync(2)` so this falls back to using :manpage:`fsync(2)`.
Defaults to 0, which means fio does not periodically issue and wait for a
data-only sync to complete.
diff --git a/configure b/configure
index 59da2f7e..e32d5dcf 100755
--- a/configure
+++ b/configure
@@ -88,14 +88,14 @@ do_cc() {
}
compile_object() {
- do_cc $CFLAGS -c -o $TMPO $TMPC
+ do_cc $CFLAGS -Werror-implicit-function-declaration -c -o $TMPO $TMPC
}
compile_prog() {
local_cflags="$1"
local_ldflags="$2 $LIBS"
echo "Compiling test case $3" >> config.log
- do_cc $CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
+ do_cc $CFLAGS -Werror-implicit-function-declaration $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
}
feature_not_found() {
diff --git a/fio.1 b/fio.1
index 77a2d799..6685e507 100644
--- a/fio.1
+++ b/fio.1
@@ -1050,7 +1050,7 @@ see \fBend_fsync\fR and \fBfsync_on_close\fR.
.TP
.BI fdatasync \fR=\fPint
Like \fBfsync\fR but uses \fBfdatasync\fR\|(2) to only sync data and
-not metadata blocks. In Windows, FreeBSD, and DragonFlyBSD there is no
+not metadata blocks. In Windows, FreeBSD, DragonFlyBSD or OSX there is no
\fBfdatasync\fR\|(2) so this falls back to using \fBfsync\fR\|(2).
Defaults to 0, which means fio does not periodically issue and wait for a
data\-only sync to complete.
diff --git a/os/os-mac.h b/os/os-mac.h
index a073300c..0d97f6b9 100644
--- a/os/os-mac.h
+++ b/os/os-mac.h
@@ -97,12 +97,6 @@ static inline int gettid(void)
}
#endif
-/*
- * For some reason, there's no header definition for fdatasync(), even
- * if it exists.
- */
-extern int fdatasync(int fd);
-
static inline bool fio_fallocate(struct fio_file *f, uint64_t offset, uint64_t len)
{
fstore_t store = {F_ALLOCATEALL, F_PEOFPOSMODE, offset, len};