fs/Kconfig             |   24 ++++++++++++++++++++++++
 include/linux/nfs_fs.h |    2 +-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff -puN fs/Kconfig~20-odirect_enable fs/Kconfig
--- 25/fs/Kconfig~20-odirect_enable	2003-08-30 15:41:18.000000000 -0700
+++ 25-akpm/fs/Kconfig	2003-08-30 15:41:18.000000000 -0700
@@ -1331,6 +1331,30 @@ config NFS_V4
 
 	  If unsure, say N.
 
+config NFS_DIRECTIO
+	bool "Allow direct I/O on NFS files (EXPERIMENTAL)"
+	depends on NFS_FS && EXPERIMENTAL
+	help
+	  This option enables applications to perform uncached I/O on files
+	  in NFS file systems using the O_DIRECT open() flag.  When O_DIRECT
+	  is set for a file, its data is not cached in the system's page
+	  cache.  Data is moved to and from user-level application buffers
+	  directly.  Unlike local disk-based file systems, NFS O_DIRECT has
+	  no alignment restrictions.
+
+	  Unless your program is designed to use O_DIRECT properly, you are
+	  much better off allowing the NFS client to manage data 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.
+
+	  For more details on NFS O_DIRECT, see fs/nfs/direct.c.
+
+	  If unsure, say N.  This reduces the size of the NFS client, and
+	  causes open() to return EINVAL if a file residing in NFS is
+	  opened with the O_DIRECT flag.
+
 config NFSD
 	tristate "NFS server support"
 	depends on INET
diff -puN include/linux/nfs_fs.h~20-odirect_enable include/linux/nfs_fs.h
--- 25/include/linux/nfs_fs.h~20-odirect_enable	2003-08-30 15:41:18.000000000 -0700
+++ 25-akpm/include/linux/nfs_fs.h	2003-08-30 15:41:18.000000000 -0700
@@ -271,7 +271,7 @@ nfs_file_cred(struct file *file)
 /*
  * linux/fs/nfs/direct.c
  */
-extern int nfs_direct_IO(int, struct file *, const struct iovec *, loff_t,
+extern int nfs_direct_IO(int, struct kiocb *, const struct iovec *, loff_t,
 			unsigned long);
 
 /*

_