mm/filemap.c        |    6 +++---
 mm/page-writeback.c |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff -puN mm/filemap.c~O_SYNC-speedup-2-f_mapping-fixes mm/filemap.c
--- 25/mm/filemap.c~O_SYNC-speedup-2-f_mapping-fixes	2003-10-03 22:17:40.000000000 -0700
+++ 25-akpm/mm/filemap.c	2003-10-03 22:17:40.000000000 -0700
@@ -2074,7 +2074,8 @@ EXPORT_SYMBOL(generic_file_readv);
 ssize_t generic_file_writev(struct file *file, const struct iovec *iov,
 			unsigned long nr_segs, loff_t *ppos)
 {
-	struct inode *inode = file->f_mapping->host;
+	struct address_space *mapping = file->f_mapping;
+	struct inode *inode = mapping->host;
 	ssize_t ret;
 
 	down(&inode->i_sem);
@@ -2084,8 +2085,7 @@ ssize_t generic_file_writev(struct file 
 	if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
 		int err;
 
-		err = sync_page_range(inode, inode->i_mapping,
-					*ppos - ret, ret);
+		err = sync_page_range(inode, mapping, *ppos - ret, ret);
 		if (err < 0)
 			ret = err;
 	}
diff -puN mm/page-writeback.c~O_SYNC-speedup-2-f_mapping-fixes mm/page-writeback.c
--- 25/mm/page-writeback.c~O_SYNC-speedup-2-f_mapping-fixes	2003-10-03 22:17:40.000000000 -0700
+++ 25-akpm/mm/page-writeback.c	2003-10-03 22:17:40.000000000 -0700
@@ -664,7 +664,7 @@ int sync_page_range(struct inode *inode,
 	ret = write_out_page_range(mapping, pos, count);
 	if (ret == 0) {
 		down(&inode->i_sem);
-		ret = generic_osync_inode(inode, OSYNC_METADATA);
+		ret = generic_osync_inode(inode, mapping, OSYNC_METADATA);
 		up(&inode->i_sem);
 	}
 	if (ret == 0)

_