diff -urN linux.10/fs/ext3/file.c linux.fs/fs/ext3/file.c
--- linux.10/fs/ext3/file.c	Mon Jan 21 23:07:29 2002
+++ linux.fs/fs/ext3/file.c	Tue Jan 22 00:41:45 2002
@@ -85,6 +85,9 @@
 #else
 	llseek:		default_llseek,		/* BKL held */
 #endif
+	kvec_read:	generic_file_kvec_read,
+	kvec_write:	generic_file_kvec_write,	/* FIXME: attributes */
+	new_read:	generic_file_new_read,
 	read:		generic_file_read,	/* BKL not held.  Don't need */
 	write:		ext3_file_write,	/* BKL not held.  Don't need */
 	ioctl:		ext3_ioctl,		/* BKL held */
@@ -92,6 +95,8 @@
 	open:		ext3_open_file,		/* BKL not held.  Don't need */
 	release:	ext3_release_file,	/* BKL not held.  Don't need */
 	fsync:		ext3_sync_file,		/* BKL held */
+	aio_read:	generic_file_aio_read,
+	aio_write:	generic_file_aio_write,
 };
 
 struct inode_operations ext3_file_inode_operations = {
diff -urN linux.10/fs/nfs/file.c linux.fs/fs/nfs/file.c
--- linux.10/fs/nfs/file.c	Mon Jan 21 23:07:32 2002
+++ linux.fs/fs/nfs/file.c	Tue Jan 22 01:02:08 2002
@@ -39,9 +39,13 @@
 static ssize_t nfs_file_write(struct file *, const char *, size_t, loff_t *);
 static int  nfs_file_flush(struct file *);
 static int  nfs_fsync(struct file *, struct dentry *dentry, int datasync);
+static int nfs_kvec_write(struct file *file, kvec_cb_t cb, size_t count, loff_t pos);
+static int nfs_kvec_read(struct file *file, kvec_cb_t cb, size_t count, loff_t pos);
 
 struct file_operations nfs_file_operations = {
 	llseek:		generic_file_llseek,
+	kvec_read:	nfs_kvec_read,
+	kvec_write:	nfs_kvec_write,
 	read:		nfs_file_read,
 	write:		nfs_file_write,
 	mmap:		nfs_file_mmap,
@@ -50,6 +54,8 @@
 	release:	nfs_release,
 	fsync:		nfs_fsync,
 	lock:		nfs_lock,
+	aio_read:	generic_file_aio_read,
+	aio_write:	generic_file_aio_write,
 };
 
 struct inode_operations nfs_file_inode_operations = {
@@ -88,6 +94,28 @@
 	return status;
 }
 
+static int nfs_kvec_write(struct file *file, kvec_cb_t cb, size_t count, loff_t pos)
+{
+	struct dentry * dentry = file->f_dentry;
+	struct inode * inode = dentry->d_inode;
+	int ret;
+	ret = nfs_revalidate_inode(NFS_SERVER(inode), inode);
+	if (!ret)
+		return generic_file_kvec_write(file, cb, count, pos);
+	return ret;
+}
+
+static int nfs_kvec_read(struct file *file, kvec_cb_t cb, size_t count, loff_t pos)
+{
+	struct dentry * dentry = file->f_dentry;
+	struct inode * inode = dentry->d_inode;
+	int ret;
+	ret = nfs_revalidate_inode(NFS_SERVER(inode), inode);
+	if (!ret)
+		return generic_file_kvec_read(file, cb, count, pos);
+	return ret;
+}
+
 static ssize_t
 nfs_file_read(struct file * file, char * buf, size_t count, loff_t *ppos)
 {
