From ad01edb37bdf7e1087eb18ed903b37dbc0241af1 Mon Sep 17 00:00:00 2001 From: James Peach Date: Tue, 31 Jan 2006 21:56:12 +0000 Subject: [PATCH] r13263: Check whether open(2) will accept the O_DIRECT flag. This should fix the build on NetBSD. (This used to be commit 7354de62a7fbf3921dfcb0bd865e89bdf1ef5bcd) --- source4/build/m4/rewrite.m4 | 12 ++++++++++++ source4/client/cifsddio.c | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source4/build/m4/rewrite.m4 b/source4/build/m4/rewrite.m4 index f0279c69d06..cd393713544 100644 --- a/source4/build/m4/rewrite.m4 +++ b/source4/build/m4/rewrite.m4 @@ -496,6 +496,18 @@ fi ;; esac +AC_CACHE_CHECK([for O_DIRECT flag to open(2)],samba_cv_HAVE_OPEN_O_DIRECT,[ +AC_TRY_COMPILE([ +#include +#ifdef HAVE_FCNTL_H +#include +#endif], +[int fd = open("/dev/null", O_DIRECT);], +samba_cv_HAVE_OPEN_O_DIRECT=yes,samba_cv_HAVE_OPEN_O_DIRECT=no)]) +if test x"$samba_cv_HAVE_OPEN_O_DIRECT" = x"yes"; then + AC_DEFINE(HAVE_OPEN_O_DIRECT,1,[Whether the open(2) accepts O_DIRECT]) +fi + ############################################### # test for where we get crypt() from AC_CHECK_LIB_EXT(crypt, CRYPT_LIBS, crypt) diff --git a/source4/client/cifsddio.c b/source4/client/cifsddio.c index 51528406bf4..b13cf3fd08c 100644 --- a/source4/client/cifsddio.c +++ b/source4/client/cifsddio.c @@ -99,8 +99,13 @@ open_fd_handle(const char * path, uint64_t iosz, int options) fdh->h.io_write = fd_write_func; fdh->h.io_seek = fd_seek_func; - if (options & DD_DIRECT_IO) + if (options & DD_DIRECT_IO) { +#ifdef HAVE_OPEN_O_DIRECT oflags |= O_DIRECT; +#else + DEBUG(1, ("no support for direct IO on this platform\n")); +#endif + } if (options & DD_SYNC_IO) oflags |= O_SYNC;