arch/ia64/kernel/perfmon.c |    1 +
 drivers/char/raw.c         |    1 +
 fs/block_dev.c             |    1 +
 fs/coda/file.c             |    1 +
 fs/eventpoll.c             |    1 +
 fs/file_table.c            |    1 +
 fs/hugetlbfs/inode.c       |    1 +
 fs/intermezzo/vfs.c        |    2 ++
 fs/open.c                  |    3 ++-
 fs/pipe.c                  |    1 +
 include/linux/fs.h         |    1 +
 kernel/futex.c             |    1 +
 mm/shmem.c                 |    1 +
 net/socket.c               |    1 +
 14 files changed, 16 insertions(+), 1 deletion(-)

diff -puN arch/ia64/kernel/perfmon.c~RD8-f_mapping-B6 arch/ia64/kernel/perfmon.c
--- 25/arch/ia64/kernel/perfmon.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/arch/ia64/kernel/perfmon.c	2003-11-04 22:00:48.000000000 -0800
@@ -2157,6 +2157,7 @@ pfm_alloc_fd(struct file **cfile)
 
 	d_add(file->f_dentry, inode);
 	file->f_vfsmnt = mntget(pfmfs_mnt);
+	file->f_mapping = inode->i_mapping;
 
 	file->f_op    = &pfm_file_ops;
 	file->f_mode  = FMODE_READ;
diff -puN drivers/char/raw.c~RD8-f_mapping-B6 drivers/char/raw.c
--- 25/drivers/char/raw.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/drivers/char/raw.c	2003-11-04 22:00:48.000000000 -0800
@@ -74,6 +74,7 @@ static int raw_open(struct inode *inode,
 			goto out;
 		}
 		filp->f_flags |= O_DIRECT;
+		filp->f_mapping = bdev->bd_inode->i_mapping;
 		if (++raw_devices[minor].inuse == 1)
 			filp->f_dentry->d_inode->i_mapping =
 				bdev->bd_inode->i_mapping;
diff -puN fs/block_dev.c~RD8-f_mapping-B6 fs/block_dev.c
--- 25/fs/block_dev.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/block_dev.c	2003-11-04 22:00:48.000000000 -0800
@@ -538,6 +538,7 @@ static int do_open(struct block_device *
 	int ret = -ENXIO;
 	int part;
 
+	file->f_mapping = bdev->bd_inode->i_mapping;
 	lock_kernel();
 	disk = get_gendisk(bdev->bd_dev, &part);
 	if (!disk) {
diff -puN fs/coda/file.c~RD8-f_mapping-B6 fs/coda/file.c
--- 25/fs/coda/file.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/coda/file.c	2003-11-04 22:00:48.000000000 -0800
@@ -89,6 +89,7 @@ coda_file_mmap(struct file *coda_file, s
 
 	coda_inode = coda_file->f_dentry->d_inode;
 	host_inode = host_file->f_dentry->d_inode;
+	coda_file->f_mapping = host_file->f_mapping;
 	if (coda_inode->i_mapping == &coda_inode->i_data)
 		coda_inode->i_mapping = host_inode->i_mapping;
 
diff -puN fs/eventpoll.c~RD8-f_mapping-B6 fs/eventpoll.c
--- 25/fs/eventpoll.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/eventpoll.c	2003-11-04 22:00:48.000000000 -0800
@@ -740,6 +740,7 @@ static int ep_getfd(int *efd, struct ino
 	d_add(dentry, inode);
 	file->f_vfsmnt = mntget(eventpoll_mnt);
 	file->f_dentry = dget(dentry);
+	file->f_mapping = inode->i_mapping;
 
 	file->f_pos = 0;
 	file->f_flags = O_RDONLY;
diff -puN fs/file_table.c~RD8-f_mapping-B6 fs/file_table.c
--- 25/fs/file_table.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/file_table.c	2003-11-04 22:00:48.000000000 -0800
@@ -120,6 +120,7 @@ int open_private_file(struct file *filp,
 	filp->f_mode   = (flags+1) & O_ACCMODE;
 	atomic_set(&filp->f_count, 1);
 	filp->f_dentry = dentry;
+	filp->f_mapping = dentry->d_inode->i_mapping;
 	filp->f_uid    = current->fsuid;
 	filp->f_gid    = current->fsgid;
 	filp->f_op     = dentry->d_inode->i_fop;
diff -puN fs/hugetlbfs/inode.c~RD8-f_mapping-B6 fs/hugetlbfs/inode.c
--- 25/fs/hugetlbfs/inode.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/hugetlbfs/inode.c	2003-11-04 22:00:48.000000000 -0800
@@ -788,6 +788,7 @@ struct file *hugetlb_zero_setup(size_t s
 	inode->i_nlink = 0;
 	file->f_vfsmnt = mntget(hugetlbfs_vfsmount);
 	file->f_dentry = dentry;
+	file->f_mapping = inode->i_mapping;
 	file->f_op = &hugetlbfs_file_operations;
 	file->f_mode = FMODE_WRITE | FMODE_READ;
 	return file;
diff -puN fs/intermezzo/vfs.c~RD8-f_mapping-B6 fs/intermezzo/vfs.c
--- 25/fs/intermezzo/vfs.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/intermezzo/vfs.c	2003-11-04 22:00:48.000000000 -0800
@@ -2083,7 +2083,9 @@ static struct file *presto_filp_dopen(st
                 }
         }
 
+	/* XXX: where the fuck is ->f_vfsmnt? */
         f->f_dentry = dentry;
+        f->f_mapping = dentry->d_inode->i_mapping;
         f->f_pos = 0;
         //f->f_reada = 0;
         f->f_op = NULL;
diff -puN fs/open.c~RD8-f_mapping-B6 fs/open.c
--- 25/fs/open.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/open.c	2003-11-04 22:00:48.000000000 -0800
@@ -776,7 +776,8 @@ struct file *dentry_open(struct dentry *
 			goto cleanup_file;
 	}
 
-	file_ra_state_init(&f->f_ra, inode->i_mapping);
+	f->f_mapping = inode->i_mapping;
+	file_ra_state_init(&f->f_ra, f->f_mapping);
 	f->f_dentry = dentry;
 	f->f_vfsmnt = mnt;
 	f->f_pos = 0;
diff -puN fs/pipe.c~RD8-f_mapping-B6 fs/pipe.c
--- 25/fs/pipe.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/fs/pipe.c	2003-11-04 22:00:48.000000000 -0800
@@ -580,6 +580,7 @@ int do_pipe(int *fd)
 	d_add(dentry, inode);
 	f1->f_vfsmnt = f2->f_vfsmnt = mntget(mntget(pipe_mnt));
 	f1->f_dentry = f2->f_dentry = dget(dentry);
+	f1->f_mapping = f2->f_mapping = inode->i_mapping;
 
 	/* read file */
 	f1->f_pos = f2->f_pos = 0;
diff -puN include/linux/fs.h~RD8-f_mapping-B6 include/linux/fs.h
--- 25/include/linux/fs.h~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/include/linux/fs.h	2003-11-04 22:00:48.000000000 -0800
@@ -526,6 +526,7 @@ struct file {
 	/* Used by fs/eventpoll.c to link all the hooks to this file */
 	struct list_head	f_ep_links;
 	spinlock_t		f_ep_lock;
+	struct address_space	*f_mapping;
 };
 extern spinlock_t files_lock;
 #define file_list_lock() spin_lock(&files_lock);
diff -puN kernel/futex.c~RD8-f_mapping-B6 kernel/futex.c
--- 25/kernel/futex.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/kernel/futex.c	2003-11-04 22:00:48.000000000 -0800
@@ -577,6 +577,7 @@ static int futex_fd(unsigned long uaddr,
 	filp->f_op = &futex_fops;
 	filp->f_vfsmnt = mntget(futex_mnt);
 	filp->f_dentry = dget(futex_mnt->mnt_root);
+	filp->f_mapping = filp->f_dentry->d_inode->i_mapping;
 
 	if (signal) {
 		int err;
diff -puN mm/shmem.c~RD8-f_mapping-B6 mm/shmem.c
--- 25/mm/shmem.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/mm/shmem.c	2003-11-04 22:00:48.000000000 -0800
@@ -1972,6 +1972,7 @@ struct file *shmem_file_setup(char *name
 	inode->i_nlink = 0;	/* It is unlinked */
 	file->f_vfsmnt = mntget(shm_mnt);
 	file->f_dentry = dentry;
+	file->f_mapping = inode->i_mapping;
 	file->f_op = &shmem_file_operations;
 	file->f_mode = FMODE_WRITE | FMODE_READ;
 	return(file);
diff -puN net/socket.c~RD8-f_mapping-B6 net/socket.c
--- 25/net/socket.c~RD8-f_mapping-B6	2003-11-04 22:00:48.000000000 -0800
+++ 25-akpm/net/socket.c	2003-11-04 22:00:48.000000000 -0800
@@ -394,6 +394,7 @@ int sock_map_fd(struct socket *sock)
 		file->f_dentry->d_op = &sockfs_dentry_operations;
 		d_add(file->f_dentry, SOCK_INODE(sock));
 		file->f_vfsmnt = mntget(sock_mnt);
+		file->f_mapping = file->f_dentry->d_inode->i_mapping;
 
 		sock->file = file;
 		file->f_op = SOCK_INODE(sock)->i_fop = &socket_file_ops;

_