diff -Naur 09-pathconf/Documentation/Configure.help 10-odirect/Documentation/Configure.help --- 09-pathconf/Documentation/Configure.help Thu Nov 28 18:53:08 2002 +++ 10-odirect/Documentation/Configure.help Mon Dec 2 15:11:06 2002 @@ -15603,6 +15603,30 @@ Most people say N here. +Allow direct I/O on files in NFS +CONFIG_NFS_DIRECTIO + There are important applications whose performance or correctness + depends on uncached access to file data. Database clusters (multiple + copies of the same instance running on separate hosts) implement their + own cache coherency protocol that subsumes the NFS cache protocols. + Applications that process datasets considerably larger than the client's + memory do not always benefit from a local cache. A streaming video + server, for instance, has no need to cache the contents of a file. + + This option enables applications to perform direct I/O on files in NFS + file systems using the O_DIRECT open() flag. When O_DIRECT is set for + files, their data is not cached in the system's page cache. Direct + read and write operations are aligned to block boundaries. Data is + moved to and from user-level application buffers directly. + + Unless your program is designed to use O_DIRECT properly, you are much + better off allowing the NFS client to manage caching for you. Misusing + O_DIRECT can cause poor server performance or network storms. This + kernel build option defaults OFF to avoid exposing system administrators + unwittingly to a potentially hazardous feature. + + If unsure, say N. + NFS server support CONFIG_NFSD If you want your Linux box to act as an NFS *server*, so that other diff -Naur 09-pathconf/arch/alpha/defconfig 10-odirect/arch/alpha/defconfig --- 09-pathconf/arch/alpha/defconfig Mon Nov 19 18:19:42 2001 +++ 10-odirect/arch/alpha/defconfig Mon Dec 2 15:01:13 2002 @@ -588,6 +588,7 @@ CONFIG_NFS_FS=m CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_SUNRPC=m diff -Naur 09-pathconf/arch/arm/def-configs/a5k 10-odirect/arch/arm/def-configs/a5k --- 09-pathconf/arch/arm/def-configs/a5k Mon Nov 27 20:07:59 2000 +++ 10-odirect/arch/arm/def-configs/a5k Mon Dec 2 15:01:13 2002 @@ -419,6 +419,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/adsbitsy 10-odirect/arch/arm/def-configs/adsbitsy --- 09-pathconf/arch/arm/def-configs/adsbitsy Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/adsbitsy Mon Dec 2 15:01:13 2002 @@ -512,6 +512,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/anakin 10-odirect/arch/arm/def-configs/anakin --- 09-pathconf/arch/arm/def-configs/anakin Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/anakin Mon Dec 2 15:01:13 2002 @@ -397,6 +397,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/assabet 10-odirect/arch/arm/def-configs/assabet --- 09-pathconf/arch/arm/def-configs/assabet Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/assabet Mon Dec 2 15:01:13 2002 @@ -692,6 +692,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/badge4 10-odirect/arch/arm/def-configs/badge4 --- 09-pathconf/arch/arm/def-configs/badge4 Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/badge4 Mon Dec 2 15:01:13 2002 @@ -862,6 +862,7 @@ CONFIG_NFS_FS=m CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=m diff -Naur 09-pathconf/arch/arm/def-configs/cerfcube 10-odirect/arch/arm/def-configs/cerfcube --- 09-pathconf/arch/arm/def-configs/cerfcube Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/cerfcube Mon Dec 2 15:01:13 2002 @@ -685,6 +685,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/cerfpda 10-odirect/arch/arm/def-configs/cerfpda --- 09-pathconf/arch/arm/def-configs/cerfpda Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/cerfpda Mon Dec 2 15:01:13 2002 @@ -723,6 +723,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/cerfpod 10-odirect/arch/arm/def-configs/cerfpod --- 09-pathconf/arch/arm/def-configs/cerfpod Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/cerfpod Mon Dec 2 15:01:13 2002 @@ -687,6 +687,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/clps7500 10-odirect/arch/arm/def-configs/clps7500 --- 09-pathconf/arch/arm/def-configs/clps7500 Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/clps7500 Mon Dec 2 15:01:13 2002 @@ -438,6 +438,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y diff -Naur 09-pathconf/arch/arm/def-configs/ebsa110 10-odirect/arch/arm/def-configs/ebsa110 --- 09-pathconf/arch/arm/def-configs/ebsa110 Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/ebsa110 Mon Dec 2 15:01:13 2002 @@ -555,6 +555,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/edb7211 10-odirect/arch/arm/def-configs/edb7211 --- 09-pathconf/arch/arm/def-configs/edb7211 Thu Oct 25 16:53:44 2001 +++ 10-odirect/arch/arm/def-configs/edb7211 Mon Dec 2 15:01:13 2002 @@ -354,6 +354,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/epxa10db 10-odirect/arch/arm/def-configs/epxa10db --- 09-pathconf/arch/arm/def-configs/epxa10db Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/epxa10db Mon Dec 2 15:01:13 2002 @@ -558,6 +558,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/flexanet 10-odirect/arch/arm/def-configs/flexanet --- 09-pathconf/arch/arm/def-configs/flexanet Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/flexanet Mon Dec 2 15:01:13 2002 @@ -676,6 +676,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/footbridge 10-odirect/arch/arm/def-configs/footbridge --- 09-pathconf/arch/arm/def-configs/footbridge Mon Nov 27 20:07:59 2000 +++ 10-odirect/arch/arm/def-configs/footbridge Mon Dec 2 15:01:13 2002 @@ -652,6 +652,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/fortunet 10-odirect/arch/arm/def-configs/fortunet --- 09-pathconf/arch/arm/def-configs/fortunet Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/fortunet Mon Dec 2 15:01:13 2002 @@ -479,6 +479,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/freebird 10-odirect/arch/arm/def-configs/freebird --- 09-pathconf/arch/arm/def-configs/freebird Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/freebird Mon Dec 2 15:01:13 2002 @@ -526,6 +526,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/freebird_new 10-odirect/arch/arm/def-configs/freebird_new --- 09-pathconf/arch/arm/def-configs/freebird_new Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/freebird_new Mon Dec 2 15:01:13 2002 @@ -546,6 +546,7 @@ CONFIG_NFS_FS=m # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=m diff -Naur 09-pathconf/arch/arm/def-configs/frodo 10-odirect/arch/arm/def-configs/frodo --- 09-pathconf/arch/arm/def-configs/frodo Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/frodo Mon Dec 2 15:01:13 2002 @@ -465,6 +465,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/graphicsclient 10-odirect/arch/arm/def-configs/graphicsclient --- 09-pathconf/arch/arm/def-configs/graphicsclient Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/graphicsclient Mon Dec 2 15:01:13 2002 @@ -618,6 +618,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/graphicsmaster 10-odirect/arch/arm/def-configs/graphicsmaster --- 09-pathconf/arch/arm/def-configs/graphicsmaster Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/graphicsmaster Mon Dec 2 15:01:13 2002 @@ -593,6 +593,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/h3600 10-odirect/arch/arm/def-configs/h3600 --- 09-pathconf/arch/arm/def-configs/h3600 Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/h3600 Mon Dec 2 15:01:13 2002 @@ -684,6 +684,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/huw_webpanel 10-odirect/arch/arm/def-configs/huw_webpanel --- 09-pathconf/arch/arm/def-configs/huw_webpanel Sun Aug 12 14:13:59 2001 +++ 10-odirect/arch/arm/def-configs/huw_webpanel Mon Dec 2 15:01:13 2002 @@ -360,6 +360,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/integrator 10-odirect/arch/arm/def-configs/integrator --- 09-pathconf/arch/arm/def-configs/integrator Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/integrator Mon Dec 2 15:01:13 2002 @@ -567,6 +567,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/jornada720 10-odirect/arch/arm/def-configs/jornada720 --- 09-pathconf/arch/arm/def-configs/jornada720 Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/jornada720 Mon Dec 2 15:01:13 2002 @@ -702,6 +702,7 @@ CONFIG_NFS_FS=m CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=m diff -Naur 09-pathconf/arch/arm/def-configs/lart 10-odirect/arch/arm/def-configs/lart --- 09-pathconf/arch/arm/def-configs/lart Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/lart Mon Dec 2 15:01:13 2002 @@ -689,6 +689,7 @@ CONFIG_NFS_FS=m CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_SUNRPC=m diff -Naur 09-pathconf/arch/arm/def-configs/neponset 10-odirect/arch/arm/def-configs/neponset --- 09-pathconf/arch/arm/def-configs/neponset Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/neponset Mon Dec 2 15:01:13 2002 @@ -678,6 +678,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/omnimeter 10-odirect/arch/arm/def-configs/omnimeter --- 09-pathconf/arch/arm/def-configs/omnimeter Sun Aug 12 14:13:59 2001 +++ 10-odirect/arch/arm/def-configs/omnimeter Mon Dec 2 15:01:13 2002 @@ -456,6 +456,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/pangolin 10-odirect/arch/arm/def-configs/pangolin --- 09-pathconf/arch/arm/def-configs/pangolin Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/pangolin Mon Dec 2 15:01:13 2002 @@ -592,6 +592,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/pfs168_mqtft 10-odirect/arch/arm/def-configs/pfs168_mqtft --- 09-pathconf/arch/arm/def-configs/pfs168_mqtft Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/pfs168_mqtft Mon Dec 2 15:01:13 2002 @@ -633,6 +633,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/pfs168_mqvga 10-odirect/arch/arm/def-configs/pfs168_mqvga --- 09-pathconf/arch/arm/def-configs/pfs168_mqvga Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/pfs168_mqvga Mon Dec 2 15:01:13 2002 @@ -633,6 +633,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/pfs168_sastn 10-odirect/arch/arm/def-configs/pfs168_sastn --- 09-pathconf/arch/arm/def-configs/pfs168_sastn Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/pfs168_sastn Mon Dec 2 15:01:13 2002 @@ -626,6 +626,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/pfs168_satft 10-odirect/arch/arm/def-configs/pfs168_satft --- 09-pathconf/arch/arm/def-configs/pfs168_satft Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/pfs168_satft Mon Dec 2 15:01:13 2002 @@ -633,6 +633,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/pleb 10-odirect/arch/arm/def-configs/pleb --- 09-pathconf/arch/arm/def-configs/pleb Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/pleb Mon Dec 2 15:01:13 2002 @@ -483,6 +483,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/arm/def-configs/rpc 10-odirect/arch/arm/def-configs/rpc --- 09-pathconf/arch/arm/def-configs/rpc Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/rpc Mon Dec 2 15:01:13 2002 @@ -654,6 +654,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/shannon 10-odirect/arch/arm/def-configs/shannon --- 09-pathconf/arch/arm/def-configs/shannon Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/shannon Mon Dec 2 15:01:13 2002 @@ -555,6 +555,7 @@ # CONFIG_INTERMEZZO_FS is not set CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y diff -Naur 09-pathconf/arch/arm/def-configs/shark 10-odirect/arch/arm/def-configs/shark --- 09-pathconf/arch/arm/def-configs/shark Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/shark Mon Dec 2 15:01:13 2002 @@ -662,6 +662,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/def-configs/system3 10-odirect/arch/arm/def-configs/system3 --- 09-pathconf/arch/arm/def-configs/system3 Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/arm/def-configs/system3 Mon Dec 2 15:01:13 2002 @@ -718,6 +718,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/arm/defconfig 10-odirect/arch/arm/defconfig --- 09-pathconf/arch/arm/defconfig Sat May 19 20:43:05 2001 +++ 10-odirect/arch/arm/defconfig Mon Dec 2 15:01:13 2002 @@ -445,6 +445,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/cris/defconfig 10-odirect/arch/cris/defconfig --- 09-pathconf/arch/cris/defconfig Fri Aug 2 20:39:42 2002 +++ 10-odirect/arch/cris/defconfig Mon Dec 2 15:01:13 2002 @@ -476,6 +476,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/i386/defconfig 10-odirect/arch/i386/defconfig --- 09-pathconf/arch/i386/defconfig Thu Nov 28 18:53:09 2002 +++ 10-odirect/arch/i386/defconfig Mon Dec 2 15:01:13 2002 @@ -691,6 +691,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/ia64/defconfig 10-odirect/arch/ia64/defconfig --- 09-pathconf/arch/ia64/defconfig Thu Nov 28 18:53:09 2002 +++ 10-odirect/arch/ia64/defconfig Mon Dec 2 15:01:13 2002 @@ -700,6 +700,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/m68k/defconfig 10-odirect/arch/m68k/defconfig --- 09-pathconf/arch/m68k/defconfig Mon Jun 19 15:56:08 2000 +++ 10-odirect/arch/m68k/defconfig Mon Dec 2 15:01:13 2002 @@ -247,6 +247,7 @@ # CONFIG_CODA_FS is not set CONFIG_NFS_FS=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y diff -Naur 09-pathconf/arch/mips/defconfig 10-odirect/arch/mips/defconfig --- 09-pathconf/arch/mips/defconfig Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig Mon Dec 2 15:01:13 2002 @@ -551,6 +551,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-atlas 10-odirect/arch/mips/defconfig-atlas --- 09-pathconf/arch/mips/defconfig-atlas Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-atlas Mon Dec 2 15:01:13 2002 @@ -565,6 +565,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-capcella 10-odirect/arch/mips/defconfig-capcella --- 09-pathconf/arch/mips/defconfig-capcella Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-capcella Mon Dec 2 15:05:16 2002 @@ -558,6 +558,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-cobalt 10-odirect/arch/mips/defconfig-cobalt --- 09-pathconf/arch/mips/defconfig-cobalt Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-cobalt Mon Dec 2 15:01:13 2002 @@ -564,6 +564,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-ddb5476 10-odirect/arch/mips/defconfig-ddb5476 --- 09-pathconf/arch/mips/defconfig-ddb5476 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-ddb5476 Mon Dec 2 15:01:13 2002 @@ -582,6 +582,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-ddb5477 10-odirect/arch/mips/defconfig-ddb5477 --- 09-pathconf/arch/mips/defconfig-ddb5477 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-ddb5477 Mon Dec 2 15:01:13 2002 @@ -490,6 +490,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-decstation 10-odirect/arch/mips/defconfig-decstation --- 09-pathconf/arch/mips/defconfig-decstation Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-decstation Mon Dec 2 15:01:13 2002 @@ -510,6 +510,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-eagle 10-odirect/arch/mips/defconfig-eagle --- 09-pathconf/arch/mips/defconfig-eagle Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-eagle Mon Dec 2 15:05:37 2002 @@ -590,6 +590,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-ev64120 10-odirect/arch/mips/defconfig-ev64120 --- 09-pathconf/arch/mips/defconfig-ev64120 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-ev64120 Mon Dec 2 15:01:13 2002 @@ -499,6 +499,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-ev96100 10-odirect/arch/mips/defconfig-ev96100 --- 09-pathconf/arch/mips/defconfig-ev96100 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-ev96100 Mon Dec 2 15:01:13 2002 @@ -493,6 +493,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-hp-lj 10-odirect/arch/mips/defconfig-hp-lj --- 09-pathconf/arch/mips/defconfig-hp-lj Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-hp-lj Mon Dec 2 15:01:13 2002 @@ -514,6 +514,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/mips/defconfig-ip22 10-odirect/arch/mips/defconfig-ip22 --- 09-pathconf/arch/mips/defconfig-ip22 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-ip22 Mon Dec 2 15:01:13 2002 @@ -551,6 +551,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-it8172 10-odirect/arch/mips/defconfig-it8172 --- 09-pathconf/arch/mips/defconfig-it8172 Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-it8172 Mon Dec 2 15:01:13 2002 @@ -606,6 +606,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/mips/defconfig-ivr 10-odirect/arch/mips/defconfig-ivr --- 09-pathconf/arch/mips/defconfig-ivr Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-ivr Mon Dec 2 15:01:13 2002 @@ -574,6 +574,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/mips/defconfig-jmr3927 10-odirect/arch/mips/defconfig-jmr3927 --- 09-pathconf/arch/mips/defconfig-jmr3927 Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-jmr3927 Mon Dec 2 15:01:13 2002 @@ -469,6 +469,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/mips/defconfig-malta 10-odirect/arch/mips/defconfig-malta --- 09-pathconf/arch/mips/defconfig-malta Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-malta Mon Dec 2 15:01:13 2002 @@ -558,6 +558,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-nino 10-odirect/arch/mips/defconfig-nino --- 09-pathconf/arch/mips/defconfig-nino Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-nino Mon Dec 2 15:01:13 2002 @@ -375,6 +375,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/mips/defconfig-ocelot 10-odirect/arch/mips/defconfig-ocelot --- 09-pathconf/arch/mips/defconfig-ocelot Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-ocelot Mon Dec 2 15:01:13 2002 @@ -447,6 +447,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/mips/defconfig-osprey 10-odirect/arch/mips/defconfig-osprey --- 09-pathconf/arch/mips/defconfig-osprey Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-osprey Mon Dec 2 15:01:13 2002 @@ -418,6 +418,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/mips/defconfig-pb1000 10-odirect/arch/mips/defconfig-pb1000 --- 09-pathconf/arch/mips/defconfig-pb1000 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-pb1000 Mon Dec 2 15:01:13 2002 @@ -674,6 +674,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-pb1100 10-odirect/arch/mips/defconfig-pb1100 --- 09-pathconf/arch/mips/defconfig-pb1100 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-pb1100 Mon Dec 2 15:06:02 2002 @@ -695,6 +695,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-pb1500 10-odirect/arch/mips/defconfig-pb1500 --- 09-pathconf/arch/mips/defconfig-pb1500 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-pb1500 Mon Dec 2 15:01:13 2002 @@ -745,6 +745,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips/defconfig-rm200 10-odirect/arch/mips/defconfig-rm200 --- 09-pathconf/arch/mips/defconfig-rm200 Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/mips/defconfig-rm200 Mon Dec 2 15:01:13 2002 @@ -374,6 +374,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_SUNRPC is not set diff -Naur 09-pathconf/arch/mips/defconfig-sb1250-swarm 10-odirect/arch/mips/defconfig-sb1250-swarm --- 09-pathconf/arch/mips/defconfig-sb1250-swarm Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips/defconfig-sb1250-swarm Mon Dec 2 15:01:13 2002 @@ -484,6 +484,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig 10-odirect/arch/mips64/defconfig --- 09-pathconf/arch/mips64/defconfig Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig Mon Dec 2 15:01:13 2002 @@ -514,6 +514,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig-atlas 10-odirect/arch/mips64/defconfig-atlas --- 09-pathconf/arch/mips64/defconfig-atlas Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig-atlas Mon Dec 2 15:01:13 2002 @@ -526,6 +526,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig-ip22 10-odirect/arch/mips64/defconfig-ip22 --- 09-pathconf/arch/mips64/defconfig-ip22 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig-ip22 Mon Dec 2 15:01:13 2002 @@ -547,6 +547,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig-ip27 10-odirect/arch/mips64/defconfig-ip27 --- 09-pathconf/arch/mips64/defconfig-ip27 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig-ip27 Mon Dec 2 15:01:13 2002 @@ -514,6 +514,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig-ip32 10-odirect/arch/mips64/defconfig-ip32 --- 09-pathconf/arch/mips64/defconfig-ip32 Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig-ip32 Mon Dec 2 15:01:13 2002 @@ -536,6 +536,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig-malta 10-odirect/arch/mips64/defconfig-malta --- 09-pathconf/arch/mips64/defconfig-malta Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig-malta Mon Dec 2 15:01:13 2002 @@ -525,6 +525,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/mips64/defconfig-sb1250-swarm 10-odirect/arch/mips64/defconfig-sb1250-swarm --- 09-pathconf/arch/mips64/defconfig-sb1250-swarm Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/mips64/defconfig-sb1250-swarm Mon Dec 2 15:01:13 2002 @@ -484,6 +484,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/parisc/defconfig 10-odirect/arch/parisc/defconfig --- 09-pathconf/arch/parisc/defconfig Thu Nov 28 18:53:10 2002 +++ 10-odirect/arch/parisc/defconfig Mon Dec 2 15:01:13 2002 @@ -617,6 +617,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/ppc/configs/IVMS8_defconfig 10-odirect/arch/ppc/configs/IVMS8_defconfig --- 09-pathconf/arch/ppc/configs/IVMS8_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/IVMS8_defconfig Mon Dec 2 15:01:13 2002 @@ -465,6 +465,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/SM850_defconfig 10-odirect/arch/ppc/configs/SM850_defconfig --- 09-pathconf/arch/ppc/configs/SM850_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/SM850_defconfig Mon Dec 2 15:01:13 2002 @@ -421,6 +421,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/SPD823TS_defconfig 10-odirect/arch/ppc/configs/SPD823TS_defconfig --- 09-pathconf/arch/ppc/configs/SPD823TS_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/SPD823TS_defconfig Mon Dec 2 15:01:13 2002 @@ -420,6 +420,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/TQM823L_defconfig 10-odirect/arch/ppc/configs/TQM823L_defconfig --- 09-pathconf/arch/ppc/configs/TQM823L_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/TQM823L_defconfig Mon Dec 2 15:01:13 2002 @@ -421,6 +421,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/TQM850L_defconfig 10-odirect/arch/ppc/configs/TQM850L_defconfig --- 09-pathconf/arch/ppc/configs/TQM850L_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/TQM850L_defconfig Mon Dec 2 15:01:13 2002 @@ -421,6 +421,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/TQM860L_defconfig 10-odirect/arch/ppc/configs/TQM860L_defconfig --- 09-pathconf/arch/ppc/configs/TQM860L_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/TQM860L_defconfig Mon Dec 2 15:01:13 2002 @@ -466,6 +466,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/apus_defconfig 10-odirect/arch/ppc/configs/apus_defconfig --- 09-pathconf/arch/ppc/configs/apus_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/apus_defconfig Mon Dec 2 15:01:13 2002 @@ -741,6 +741,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/briq_defconfig 10-odirect/arch/ppc/configs/briq_defconfig --- 09-pathconf/arch/ppc/configs/briq_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/briq_defconfig Mon Dec 2 15:03:18 2002 @@ -680,6 +680,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/bseip_defconfig 10-odirect/arch/ppc/configs/bseip_defconfig --- 09-pathconf/arch/ppc/configs/bseip_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/bseip_defconfig Mon Dec 2 15:01:13 2002 @@ -420,6 +420,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/common_defconfig 10-odirect/arch/ppc/configs/common_defconfig --- 09-pathconf/arch/ppc/configs/common_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/common_defconfig Mon Dec 2 15:01:13 2002 @@ -793,6 +793,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/est8260_defconfig 10-odirect/arch/ppc/configs/est8260_defconfig --- 09-pathconf/arch/ppc/configs/est8260_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/est8260_defconfig Mon Dec 2 15:01:13 2002 @@ -404,6 +404,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/gemini_defconfig 10-odirect/arch/ppc/configs/gemini_defconfig --- 09-pathconf/arch/ppc/configs/gemini_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/gemini_defconfig Mon Dec 2 15:01:13 2002 @@ -501,6 +501,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/ibmchrp_defconfig 10-odirect/arch/ppc/configs/ibmchrp_defconfig --- 09-pathconf/arch/ppc/configs/ibmchrp_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/ibmchrp_defconfig Mon Dec 2 15:01:13 2002 @@ -661,6 +661,7 @@ # CONFIG_NFS_FS is not set # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/mbx_defconfig 10-odirect/arch/ppc/configs/mbx_defconfig --- 09-pathconf/arch/ppc/configs/mbx_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/mbx_defconfig Mon Dec 2 15:01:13 2002 @@ -416,6 +416,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/oak_defconfig 10-odirect/arch/ppc/configs/oak_defconfig --- 09-pathconf/arch/ppc/configs/oak_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/oak_defconfig Mon Dec 2 15:01:13 2002 @@ -403,6 +403,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/pal4_defconfig 10-odirect/arch/ppc/configs/pal4_defconfig --- 09-pathconf/arch/ppc/configs/pal4_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/pal4_defconfig Mon Dec 2 15:03:38 2002 @@ -514,6 +514,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/pmac_defconfig 10-odirect/arch/ppc/configs/pmac_defconfig --- 09-pathconf/arch/ppc/configs/pmac_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/pmac_defconfig Mon Dec 2 15:01:13 2002 @@ -900,6 +900,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/power3_defconfig 10-odirect/arch/ppc/configs/power3_defconfig --- 09-pathconf/arch/ppc/configs/power3_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/power3_defconfig Mon Dec 2 15:01:13 2002 @@ -633,6 +633,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/rpxcllf_defconfig 10-odirect/arch/ppc/configs/rpxcllf_defconfig --- 09-pathconf/arch/ppc/configs/rpxcllf_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/rpxcllf_defconfig Mon Dec 2 15:01:13 2002 @@ -420,6 +420,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/rpxlite_defconfig 10-odirect/arch/ppc/configs/rpxlite_defconfig --- 09-pathconf/arch/ppc/configs/rpxlite_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/rpxlite_defconfig Mon Dec 2 15:01:13 2002 @@ -420,6 +420,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/spruce_defconfig 10-odirect/arch/ppc/configs/spruce_defconfig --- 09-pathconf/arch/ppc/configs/spruce_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/spruce_defconfig Mon Dec 2 15:03:54 2002 @@ -454,6 +454,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/configs/walnut_defconfig 10-odirect/arch/ppc/configs/walnut_defconfig --- 09-pathconf/arch/ppc/configs/walnut_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/configs/walnut_defconfig Mon Dec 2 15:01:13 2002 @@ -407,6 +407,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc/defconfig 10-odirect/arch/ppc/defconfig --- 09-pathconf/arch/ppc/defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc/defconfig Mon Dec 2 15:01:13 2002 @@ -793,6 +793,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set # CONFIG_NFSD_TCP is not set diff -Naur 09-pathconf/arch/ppc64/configs/iSeries_devfs_defconfig 10-odirect/arch/ppc64/configs/iSeries_devfs_defconfig --- 09-pathconf/arch/ppc64/configs/iSeries_devfs_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc64/configs/iSeries_devfs_defconfig Mon Dec 2 15:01:13 2002 @@ -515,6 +515,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/ppc64/configs/iSeries_nodevfs_ideemul_defconfig 10-odirect/arch/ppc64/configs/iSeries_nodevfs_ideemul_defconfig --- 09-pathconf/arch/ppc64/configs/iSeries_nodevfs_ideemul_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc64/configs/iSeries_nodevfs_ideemul_defconfig Mon Dec 2 15:01:13 2002 @@ -546,6 +546,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/ppc64/configs/pSeries_defconfig 10-odirect/arch/ppc64/configs/pSeries_defconfig --- 09-pathconf/arch/ppc64/configs/pSeries_defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc64/configs/pSeries_defconfig Mon Dec 2 15:01:13 2002 @@ -637,6 +637,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/ppc64/defconfig 10-odirect/arch/ppc64/defconfig --- 09-pathconf/arch/ppc64/defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/ppc64/defconfig Mon Dec 2 15:01:13 2002 @@ -637,6 +637,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/s390/defconfig 10-odirect/arch/s390/defconfig --- 09-pathconf/arch/s390/defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/s390/defconfig Mon Dec 2 15:01:13 2002 @@ -232,6 +232,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=y # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/s390x/defconfig 10-odirect/arch/s390x/defconfig --- 09-pathconf/arch/s390x/defconfig Thu Nov 28 18:53:11 2002 +++ 10-odirect/arch/s390x/defconfig Mon Dec 2 15:01:13 2002 @@ -232,6 +232,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/sparc/defconfig 10-odirect/arch/sparc/defconfig --- 09-pathconf/arch/sparc/defconfig Fri Aug 2 20:39:43 2002 +++ 10-odirect/arch/sparc/defconfig Mon Dec 2 15:01:13 2002 @@ -333,6 +333,7 @@ CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y diff -Naur 09-pathconf/arch/sparc64/defconfig 10-odirect/arch/sparc64/defconfig --- 09-pathconf/arch/sparc64/defconfig Thu Nov 28 18:53:12 2002 +++ 10-odirect/arch/sparc64/defconfig Mon Dec 2 15:01:13 2002 @@ -652,6 +652,7 @@ CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set +# CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_NFSD_TCP=y diff -Naur 09-pathconf/fs/Config.in 10-odirect/fs/Config.in --- 09-pathconf/fs/Config.in Thu Nov 28 18:53:15 2002 +++ 10-odirect/fs/Config.in Mon Dec 2 15:11:44 2002 @@ -103,6 +103,7 @@ dep_tristate 'NFS file system support' CONFIG_NFS_FS $CONFIG_INET dep_mbool ' Provide NFSv3 client support' CONFIG_NFS_V3 $CONFIG_NFS_FS dep_bool ' Root file system on NFS' CONFIG_ROOT_NFS $CONFIG_NFS_FS $CONFIG_IP_PNP + dep_mbool ' Allow direct I/O on NFS files (EXPERIMENTAL)' CONFIG_NFS_DIRECTIO $CONFIG_NFS_FS $CONFIG_EXPERIMENTAL dep_tristate 'NFS server support' CONFIG_NFSD $CONFIG_INET dep_mbool ' Provide NFSv3 server support' CONFIG_NFSD_V3 $CONFIG_NFSD diff -Naur 09-pathconf/fs/block_dev.c 10-odirect/fs/block_dev.c --- 09-pathconf/fs/block_dev.c Fri Aug 2 20:39:45 2002 +++ 10-odirect/fs/block_dev.c Mon Dec 2 14:57:24 2002 @@ -131,8 +131,9 @@ return 0; } -static int blkdev_direct_IO(int rw, struct inode * inode, struct kiobuf * iobuf, unsigned long blocknr, int blocksize) +static int blkdev_direct_IO(int rw, struct file * filp, struct kiobuf * iobuf, unsigned long blocknr, int blocksize) { + struct inode * inode = filp->f_dentry->d_inode->i_mapping->host; return generic_direct_IO(rw, inode, iobuf, blocknr, blocksize, blkdev_get_block); } diff -Naur 09-pathconf/fs/ext2/inode.c 10-odirect/fs/ext2/inode.c --- 09-pathconf/fs/ext2/inode.c Thu Nov 28 18:53:15 2002 +++ 10-odirect/fs/ext2/inode.c Mon Dec 2 14:57:24 2002 @@ -592,8 +592,9 @@ { return generic_block_bmap(mapping,block,ext2_get_block); } -static int ext2_direct_IO(int rw, struct inode * inode, struct kiobuf * iobuf, unsigned long blocknr, int blocksize) +static int ext2_direct_IO(int rw, struct file * filp, struct kiobuf * iobuf, unsigned long blocknr, int blocksize) { + struct inode * inode = filp->f_dentry->d_inode->i_mapping->host; return generic_direct_IO(rw, inode, iobuf, blocknr, blocksize, ext2_get_block); } struct address_space_operations ext2_aops = { diff -Naur 09-pathconf/fs/nfs/Makefile 10-odirect/fs/nfs/Makefile --- 09-pathconf/fs/nfs/Makefile Fri Nov 9 17:28:15 2001 +++ 10-odirect/fs/nfs/Makefile Mon Dec 2 14:57:24 2002 @@ -14,6 +14,7 @@ obj-$(CONFIG_ROOT_NFS) += nfsroot.o mount_clnt.o obj-$(CONFIG_NFS_V3) += nfs3proc.o nfs3xdr.o +obj-$(CONFIG_NFS_DIRECTIO) += direct.o obj-m := $(O_TARGET) diff -Naur 09-pathconf/fs/nfs/direct.c 10-odirect/fs/nfs/direct.c --- 09-pathconf/fs/nfs/direct.c Wed Dec 31 19:00:00 1969 +++ 10-odirect/fs/nfs/direct.c Mon Dec 2 14:57:24 2002 @@ -0,0 +1,373 @@ +/* + * linux/fs/nfs/direct.c + * + * High-performance direct I/O for the NFS client + * + * When an application requests uncached I/O, all read and write requests + * are made directly to the server; data stored or fetched via these + * requests is not cached in the Linux page cache. The client does not + * correct unaligned requests from applications. All requested bytes are + * held on permanent storage before a direct write system call returns to + * an application. Applications that manage their own data caching, such + * as databases, make very good use of direct I/O on local file systems. + * + * Solaris implements an uncached I/O facility called directio() that + * is used for backups and sequential I/O to very large files. Solaris + * also supports uncaching whole NFS partitions with "-o forcedirectio," + * an undocumented mount option. + * + * Note that I/O to read in executables (e.g. kernel_read) cannot use + * direct (kiobuf) reads because there is no vma backing the passed-in + * data buffer. + * + * Designed by Jeff Kimmel, Chuck Lever, and Trond Myklebust. + * + * Initial implementation: 12/2001 by Chuck Lever + * + * TODO: + * + * 1. Use concurrent asynchronous network requests rather than + * serialized synchronous network requests for normal (non-sync) + * direct I/O. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define NFSDBG_FACILITY (NFSDBG_PAGECACHE | NFSDBG_VFS) +#define VERF_SIZE (2 * sizeof(__u32)) + +static inline int +nfs_direct_read_rpc(struct file *file, struct nfs_readargs *arg) +{ + int result; + struct inode * inode = file->f_dentry->d_inode; + struct nfs_fattr fattr; + struct rpc_message msg; + struct nfs_readres res = { &fattr, arg->count, 0 }; + +#ifdef CONFIG_NFS_V3 + msg.rpc_proc = (NFS_PROTO(inode)->version == 3) ? + NFS3PROC_READ : NFSPROC_READ; +#else + msg.rpc_proc = NFSPROC_READ; +#endif + msg.rpc_argp = arg; + msg.rpc_resp = &res; + + lock_kernel(); + msg.rpc_cred = nfs_file_cred(file); + fattr.valid = 0; + result = rpc_call_sync(NFS_CLIENT(inode), &msg, 0); + nfs_refresh_inode(inode, &fattr); + unlock_kernel(); + + return result; +} + +static inline int +nfs_direct_write_rpc(struct file *file, struct nfs_writeargs *arg, + struct nfs_writeverf *verf) +{ + int result; + struct inode *inode = file->f_dentry->d_inode; + struct nfs_fattr fattr; + struct rpc_message msg; + struct nfs_writeres res = { &fattr, verf, 0 }; + +#ifdef CONFIG_NFS_V3 + msg.rpc_proc = (NFS_PROTO(inode)->version == 3) ? + NFS3PROC_WRITE : NFSPROC_WRITE; +#else + msg.rpc_proc = NFSPROC_WRITE; +#endif + msg.rpc_argp = arg; + msg.rpc_resp = &res; + + lock_kernel(); + msg.rpc_cred = get_rpccred(nfs_file_cred(file)); + fattr.valid = 0; + result = rpc_call_sync(NFS_CLIENT(inode), &msg, 0); + nfs_write_attributes(inode, &fattr); + put_rpccred(msg.rpc_cred); + unlock_kernel(); + +#ifdef CONFIG_NFS_V3 + if (NFS_PROTO(inode)->version == 3) { + if (result > 0) { + if ((arg->stable == NFS_FILE_SYNC) && + (verf->committed != NFS_FILE_SYNC)) { + printk(KERN_ERR __FUNCTION__ + ": server didn't sync stable write request\n"); + return -EIO; + } + + if (result != arg->count) { + printk(KERN_INFO __FUNCTION__ + ": short write, count=%u, result=%d\n", + arg->count, result); + } + } + return result; + } else { +#endif + verf->committed = NFS_FILE_SYNC; /* NFSv2 always syncs data */ + if (result == 0) + return arg->count; + return result; +#ifdef CONFIG_NFS_V3 + } +#endif +} + +#ifdef CONFIG_NFS_V3 +static inline int +nfs_direct_commit_rpc(struct inode *inode, loff_t offset, size_t count, + struct nfs_writeverf *verf) +{ + int result; + struct nfs_fattr fattr; + struct nfs_writeargs arg = { NFS_FH(inode), offset, count, 0, 0, + NULL }; + struct nfs_writeres res = { &fattr, verf, 0 }; + struct rpc_message msg = { NFS3PROC_COMMIT, &arg, &res, NULL }; + + fattr.valid = 0; + + lock_kernel(); + result = rpc_call_sync(NFS_CLIENT(inode), &msg, 0); + nfs_write_attributes(inode, &fattr); + unlock_kernel(); + + return result; +} +#else +static inline int +nfs_direct_commit_rpc(struct inode *inode, loff_t offset, size_t count, + struct nfs_writeverf *verf) +{ + return 0; +} +#endif + +/* + * Walk through the iobuf and create an iovec for each "rsize" bytes. + */ +static int +nfs_direct_read(struct file *file, struct kiobuf *iobuf, loff_t offset, + size_t count) +{ + int curpage, total; + struct inode *inode = file->f_dentry->d_inode; + int rsize = NFS_SERVER(inode)->rsize; + struct page *pages[NFS_READ_MAXIOV]; + struct nfs_readargs args = { NFS_FH(inode), offset, 0, iobuf->offset, + pages }; + + total = 0; + curpage = 0; + while (count) { + int len, request, result; + struct page **dest = pages; + + request = count; + if (count > rsize) + request = rsize; + args.count = request; + args.offset = offset; + args.pgbase = (iobuf->offset + total) & ~PAGE_MASK; + len = PAGE_SIZE - args.pgbase; + + do { + struct page *page = iobuf->maplist[curpage]; + + if (!page) + return -EFAULT; + + *dest++ = page; + /* zero after the first iov */ + if (request < len) + break; + request -= len; + len = PAGE_SIZE; + curpage++; + } while (request != 0 && curpage < iobuf->nr_pages); + + result = nfs_direct_read_rpc(file, &args); + + if (result < 0) { + total = result; + break; + } + + total += result; + if (result < args.count) /* NFSv2ism */ + break; + count -= result; + offset += result; + }; + return total; +} + +/* + * Walk through the iobuf and create an iovec for each "wsize" bytes. + * If only one network write is necessary, or if the O_SYNC flag or + * 'sync' mount option are present, or if this is a V2 inode, use + * FILE_SYNC. Otherwise, use UNSTABLE and finish with a COMMIT. + * + * The mechanics of this function are much the same as nfs_direct_read, + * with the added complexity of committing unstable writes. + */ +static int +nfs_direct_write(struct file *file, struct kiobuf *iobuf, + loff_t offset, size_t count) +{ + int curpage, total; + int need_commit = 0; + loff_t save_offset = offset; + struct inode *inode = file->f_dentry->d_inode; + int wsize = NFS_SERVER(inode)->wsize; + struct nfs_writeverf first_verf, ret_verf; + struct page *pages[NFS_WRITE_MAXIOV]; + struct nfs_writeargs args = { NFS_FH(inode), 0, 0, NFS_FILE_SYNC, 0, + pages }; + +#ifdef CONFIG_NFS_V3 + if ((NFS_PROTO(inode)->version == 3) && (count > wsize) && + (!IS_SYNC(inode))) + args.stable = NFS_UNSTABLE; +#endif + +retry: + total = 0; + curpage = 0; + while (count) { + int len, request, result; + struct page **dest = pages; + + request = count; + if (count > wsize) + request = wsize; + args.count = request; + args.offset = offset; + args.pgbase = (iobuf->offset + total) & ~PAGE_MASK; + len = PAGE_SIZE - args.pgbase; + + do { + struct page *page = iobuf->maplist[curpage]; + + if (!page) + return -EFAULT; + + *dest++ = page; + /* zero after the first iov */ + if (request < len) + break; + request -= len; + len = PAGE_SIZE; + curpage++; + } while (request != 0 && curpage < iobuf->nr_pages); + + result = nfs_direct_write_rpc(file, &args, &ret_verf); + + if (result < 0) { + total = result; + break; + } + + if (!total) + memcpy(&first_verf.verifier, &ret_verf.verifier, + VERF_SIZE); + if (ret_verf.committed != NFS_FILE_SYNC) { + need_commit = 1; + if (memcmp(&first_verf.verifier, &ret_verf.verifier, + VERF_SIZE)) + goto print_retry; + } + + total += result; + count -= result; + offset += result; + }; + + /* + * Commit data written so far, even in the event of an error + */ + if (need_commit) { + if (nfs_direct_commit_rpc(inode, save_offset, + iobuf->length - count, &ret_verf)) + goto print_retry; + if (memcmp(&first_verf.verifier, &ret_verf.verifier, + VERF_SIZE)) + goto print_retry; + } + + return total; + +print_retry: + printk(KERN_INFO __FUNCTION__ + ": detected server restart; retrying with FILE_SYNC\n"); + args.stable = NFS_FILE_SYNC; + offset = save_offset; + count = iobuf->length; + goto retry; +} + +/* + * Read or write data, moving the data directly to/from the + * application's buffer without caching in the page cache. + * + * Rules for direct I/O + * + * 1. block size = 512 bytes or more + * 2. file byte offset is block aligned + * 3. byte count is a multiple of block size + * 4. user buffer is not aligned + * 5. user buffer is faulted in and pinned + * + * These are verified before we get here. + */ +int +nfs_direct_IO(int rw, struct file *file, struct kiobuf *iobuf, + unsigned long blocknr, int blocksize) +{ + int result = -EINVAL; + size_t count = iobuf->length; + struct dentry *dentry = file->f_dentry; + struct inode *inode = dentry->d_inode; + loff_t offset = blocknr << inode->i_blkbits; + + switch (rw) { + case READ: + dfprintk(VFS, + "NFS: direct_IO(READ) (%s/%s) off/cnt(%Lu/%d)\n", + dentry->d_parent->d_name.name, + dentry->d_name.name, offset, count); + + result = nfs_direct_read(file, iobuf, offset, count); + break; + case WRITE: + dfprintk(VFS, + "NFS: direct_IO(WRITE) (%s/%s) off/cnt(%Lu/%d)\n", + dentry->d_parent->d_name.name, + dentry->d_name.name, offset, count); + + result = nfs_direct_write(file, iobuf, offset, count); + break; + default: + break; + } + + dfprintk(VFS, "NFS: direct_IO result = %d\n", result); + return result; +} diff -Naur 09-pathconf/fs/nfs/file.c 10-odirect/fs/nfs/file.c --- 09-pathconf/fs/nfs/file.c Mon Feb 25 14:38:09 2002 +++ 10-odirect/fs/nfs/file.c Mon Dec 2 14:57:24 2002 @@ -16,6 +16,7 @@ * nfs regular file handling functions */ +#include #include #include #include @@ -199,6 +200,9 @@ sync_page: nfs_sync_page, writepage: nfs_writepage, prepare_write: nfs_prepare_write, +#ifdef CONFIG_NFS_DIRECTIO + direct_IO: nfs_direct_IO, +#endif commit_write: nfs_commit_write }; diff -Naur 09-pathconf/fs/nfs/write.c 10-odirect/fs/nfs/write.c --- 09-pathconf/fs/nfs/write.c Mon Dec 2 14:49:16 2002 +++ 10-odirect/fs/nfs/write.c Mon Dec 2 14:57:24 2002 @@ -123,23 +123,6 @@ } /* - * This function will be used to simulate weak cache consistency - * under NFSv2 when the NFSv3 attribute patch is included. - * For the moment, we just call nfs_refresh_inode(). - */ -static __inline__ int -nfs_write_attributes(struct inode *inode, struct nfs_fattr *fattr) -{ - if ((fattr->valid & NFS_ATTR_FATTR) && !(fattr->valid & NFS_ATTR_WCC)) { - fattr->pre_size = NFS_CACHE_ISIZE(inode); - fattr->pre_mtime = NFS_CACHE_MTIME(inode); - fattr->pre_ctime = NFS_CACHE_CTIME(inode); - fattr->valid |= NFS_ATTR_WCC; - } - return nfs_refresh_inode(inode, fattr); -} - -/* * Write a page synchronously. * Offset is the data offset within the page. */ diff -Naur 09-pathconf/include/linux/fs.h 10-odirect/include/linux/fs.h --- 09-pathconf/include/linux/fs.h Mon Dec 2 13:42:19 2002 +++ 10-odirect/include/linux/fs.h Mon Dec 2 14:57:24 2002 @@ -395,7 +395,7 @@ int (*flushpage) (struct page *, unsigned long); int (*releasepage) (struct page *, int); #define KERNEL_HAS_O_DIRECT /* this is for modules out of the kernel */ - int (*direct_IO)(int, struct inode *, struct kiobuf *, unsigned long, int); + int (*direct_IO)(int, struct file *, struct kiobuf *, unsigned long, int); }; struct address_space { diff -Naur 09-pathconf/include/linux/nfs_fs.h 10-odirect/include/linux/nfs_fs.h --- 09-pathconf/include/linux/nfs_fs.h Mon Dec 2 14:54:18 2002 +++ 10-odirect/include/linux/nfs_fs.h Mon Dec 2 14:57:24 2002 @@ -277,6 +277,11 @@ extern int nfs_scan_lru_read_timeout(struct nfs_server *, struct list_head *); /* + * linux/fs/nfs/direct.c + */ +extern int nfs_direct_IO(int, struct file *, struct kiobuf *, unsigned long, int); + +/* * linux/fs/mount_clnt.c * (Used only by nfsroot module) */ @@ -305,6 +310,23 @@ return __nfs_refresh_inode(inode,fattr); } +/* + * This function will be used to simulate weak cache consistency + * under NFSv2 when the NFSv3 attribute patch is included. + * For the moment, we just call nfs_refresh_inode(). + */ +static __inline__ int +nfs_write_attributes(struct inode *inode, struct nfs_fattr *fattr) +{ + if ((fattr->valid & NFS_ATTR_FATTR) && !(fattr->valid & NFS_ATTR_WCC)) { + fattr->pre_size = NFS_CACHE_ISIZE(inode); + fattr->pre_mtime = NFS_CACHE_MTIME(inode); + fattr->pre_ctime = NFS_CACHE_CTIME(inode); + fattr->valid |= NFS_ATTR_WCC; + } + return nfs_refresh_inode(inode, fattr); +} + static inline loff_t nfs_size_to_loff_t(__u64 size) { diff -Naur 09-pathconf/include/linux/nfs_xdr.h 10-odirect/include/linux/nfs_xdr.h --- 09-pathconf/include/linux/nfs_xdr.h Mon Dec 2 14:55:46 2002 +++ 10-odirect/include/linux/nfs_xdr.h Mon Dec 2 14:57:24 2002 @@ -83,7 +83,7 @@ /* Arguments to the read call. * Note that NFS_READ_MAXIOV must be <= (MAX_IOVEC-2) from sunrpc/xprt.h */ -#define NFS_READ_MAXIOV 8 +#define NFS_READ_MAXIOV (9) struct nfs_readargs { struct nfs_fh * fh; @@ -102,7 +102,7 @@ /* Arguments to the write call. * Note that NFS_WRITE_MAXIOV must be <= (MAX_IOVEC-2) from sunrpc/xprt.h */ -#define NFS_WRITE_MAXIOV 8 +#define NFS_WRITE_MAXIOV (9) struct nfs_writeargs { struct nfs_fh * fh; __u64 offset; diff -Naur 09-pathconf/mm/filemap.c 10-odirect/mm/filemap.c --- 09-pathconf/mm/filemap.c Thu Nov 28 18:53:15 2002 +++ 10-odirect/mm/filemap.c Mon Dec 2 14:57:24 2002 @@ -1599,7 +1599,7 @@ if (retval) break; - retval = mapping->a_ops->direct_IO(rw, inode, iobuf, (offset+progress) >> blocksize_bits, blocksize); + retval = mapping->a_ops->direct_IO(rw, filp, iobuf, (offset+progress) >> blocksize_bits, blocksize); if (rw == READ && retval > 0) mark_dirty_kiobuf(iobuf, retval);