Date: Sat, 13 Dec 2008 09:19:52 GMT From: Ping Mai <pingmai@yahoo.com> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/129606: iozone port does not support O_DIRECT Message-ID: <200812130919.mBD9JqQr029662@www.freebsd.org> Resent-Message-ID: <200812130930.mBD9U100072788@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812130919.mBD9JqQr029662>