ports/129606: iozone port does not support O_DIRECT
Ping Mai
pingmai at yahoo.com
Sat Dec 13 09:30:02 UTC 2008
>Number: 129606
>Category: ports
>Synopsis: iozone port does not support O_DIRECT
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Dec 13 09:30:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Ping Mai
>Release: 6R, 7R
>Organization:
>Environment:
FreeBSD agra.pinelake.stepnet.com 6.4-PRERELEASE FreeBSD 6.4-PRERELEASE #7: Tue Dec 2 14:00:15 PST 2008 root at agra.pinelake.stepnet.com:/usr/src/sys/i386/compile/AGRA i386
>Description:
iozone does not support O_DIRECT (-I) in freebsd.
>How-To-Repeat:
iozone -I does not use O_DIRECT I/O
>Fix:
fix based on port iozone-3.283_1
see patch-makefile and patch-iozone.c
see attached patch files.
they will make iozone use O_DIRECT when "-I" switch is supplied on cmd line.
ping at agra /usr/ports/benchmarks/iozone/files$ diff -u patch-makefile.orig patch-makefile
--- patch-makefile.orig 2008-12-13 01:17:41.000000000 -0800
+++ patch-makefile 2008-12-11 11:49:41.000000000 -0800
@@ -1,6 +1,6 @@
---- makefile.orig Sat Oct 28 22:48:00 2006
-+++ makefile Thu Jan 11 21:41:17 2007
-@@ -389,7 +389,7 @@
+--- makefile.orig 2007-02-19 09:12:18.000000000 -0800
++++ makefile 2008-12-11 11:48:52.000000000 -0800
+@@ -400,7 +400,7 @@
#
freebsd: iozone_freebsd.o libbif.o fileop_freebsd.o libasync.o
@@ -9,3 +9,20 @@
-o iozone
$(CC) -O fileop_freebsd.o -o fileop
+@@ -1089,13 +1089,13 @@
+ @echo ""
+ @echo "Build iozone for FreeBSD"
+ @echo ""
+- $(CC) -c ${CFLAGS} -Dunix -Dbsd4_4 -DHAVE_ANSIC_C -DASYNC_IO \
++ $(CC) -c ${CFLAGS} -Dfreebsd -Dunix -Dbsd4_4 -DHAVE_ANSIC_C -DASYNC_IO \
+ -DHAVE_PREAD -DNAME='"freebsd"' -DSHARED_MEM \
+ $(CFLAGS) iozone.c -o iozone_freebsd.o
+- $(CC) -c ${CFLAGS} -Dunix -Dbsd4_4 -DHAVE_ANSIC_C -DASYNC_IO \
++ $(CC) -c ${CFLAGS} -Dfreebsd -Dunix -Dbsd4_4 -DHAVE_ANSIC_C -DASYNC_IO \
+ -DSHARED_MEM -DHAVE_PREAD $(CFLAGS) libbif.c \
+ -o libbif.o
+- $(CC) -c ${CFLAGS} -Dunix -Dbsd4_4 -DHAVE_ANSIC_C -DASYNC_IO \
++ $(CC) -c ${CFLAGS} -Dfreebsd -Dunix -Dbsd4_4 -DHAVE_ANSIC_C -DASYNC_IO \
+ -DSHARED_MEM -DHAVE_PREAD $(CFLAGS) libasync.c \
+ -o libasync.o
+
Patch attached with submission follows:
--- iozone.c.orig 2007-02-19 09:12:18.000000000 -0800
+++ iozone.c 2008-12-13 01:07:56.000000000 -0800
@@ -268,6 +268,12 @@
#endif
#endif
+#if defined (__FreeBSD__)
+#ifndef O_RSYNC
+#define O_RSYNC O_FSYNC
+#endif
+#endif
+
#if ((defined(solaris) && defined(__LP64__)) || defined(__s390x__))
/* If we are building for 64-bit Solaris, all functions that return pointers
* must be declared before they are used; otherwise the compiler will assume
@@ -741,7 +747,7 @@
/* At 16 Meg switch to large records */
#define CROSSOVER (16*1024)
/* Maximum buffer size*/
-#define MAXBUFFERSIZE (16*1024*1024)
+#define MAXBUFFERSIZE (32*1024*1024)
#endif
/* Maximum number of children. Threads/procs/clients */
@@ -1652,7 +1658,7 @@
break;
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
direct_flag++;
sprintf(splash[splash_line++],"\tO_DIRECT feature enabled\n");
break;
@@ -6401,7 +6407,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
file_flags |=O_DIRECT;
#endif
@@ -7353,7 +7359,7 @@
open_flags |=O_RSYNC|O_SYNC;
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
open_flags |=O_DIRECT;
#endif
@@ -7830,7 +7836,7 @@
numrecs64 = (kilo64*1024)/reclen;
flags = O_RDWR;
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -8258,7 +8264,7 @@
maddr=wmaddr=0;
open_flags=O_RDONLY;
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
open_flags |=O_DIRECT;
#endif
@@ -8542,7 +8548,7 @@
/* flags = O_RDWR|O_CREAT|O_TRUNC;*/
flags = O_RDWR|O_CREAT;
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -8846,7 +8852,7 @@
nbuff=maddr=wmaddr=0;
open_flags=O_RDONLY;
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
open_flags |=O_DIRECT;
#endif
@@ -9174,7 +9180,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags_here |=O_DIRECT;
#endif
@@ -9445,7 +9451,7 @@
nbuff=mainbuffer;
open_flags=O_RDONLY;
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
open_flags |=O_DIRECT;
#endif
@@ -9691,7 +9697,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags_here |=O_DIRECT;
#endif
@@ -10021,7 +10027,7 @@
open_flags=O_RDONLY;
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
open_flags |=O_DIRECT;
#endif
@@ -11314,7 +11320,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -11952,7 +11958,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -12510,7 +12516,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -13010,7 +13016,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -13538,7 +13544,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -14033,7 +14039,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -14545,7 +14551,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -15018,7 +15024,7 @@
flags |=O_RSYNC|O_SYNC;
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -15560,7 +15566,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -16091,7 +16097,7 @@
#endif
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
if(direct_flag)
flags |=O_DIRECT;
#endif
@@ -17006,7 +17012,7 @@
file_flags=fcntl(fd,F_GETFL);
#if ! defined(DONT_HAVE_O_DIRECT)
-#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64)
+#if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(freebsd)
dflag = O_DIRECT;
#endif
#if defined(TRU64)
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list