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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/arch/ia64/kernel/perfmon.c 2003-10-05 00:34:03.000000000 -0700 @@ -2165,6 +2165,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/drivers/char/raw.c 2003-10-05 00:34:03.000000000 -0700 @@ -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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/block_dev.c 2003-10-05 00:34:03.000000000 -0700 @@ -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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/coda/file.c 2003-10-05 00:34:03.000000000 -0700 @@ -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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/eventpoll.c 2003-10-05 00:34:03.000000000 -0700 @@ -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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/file_table.c 2003-10-05 00:34:03.000000000 -0700 @@ -114,6 +114,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/hugetlbfs/inode.c 2003-10-05 00:34:03.000000000 -0700 @@ -774,6 +774,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/intermezzo/vfs.c 2003-10-05 00:34:03.000000000 -0700 @@ -2084,7 +2084,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/open.c 2003-10-05 00:34:03.000000000 -0700 @@ -772,7 +772,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/fs/pipe.c 2003-10-05 00:34:03.000000000 -0700 @@ -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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/include/linux/fs.h 2003-10-05 00:34:03.000000000 -0700 @@ -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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/kernel/futex.c 2003-10-05 00:34:03.000000000 -0700 @@ -497,6 +497,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/mm/shmem.c 2003-10-05 00:34:03.000000000 -0700 @@ -1933,6 +1933,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-10-05 00:34:02.000000000 -0700 +++ 25-akpm/net/socket.c 2003-10-05 00:34:03.000000000 -0700 @@ -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; _