<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"> arch/parisc/kernel/sys_parisc.c |    8 ++------
 drivers/block/loop.c            |   14 ++++++++------
 fs/fcntl.c                      |    4 ++--
 fs/ioctl.c                      |    2 +-
 fs/locks.c                      |    4 ++--
 fs/open.c                       |    4 ++--
 kernel/fork.c                   |    4 ++--
 mm/fadvise.c                    |    4 +---
 mm/mmap.c                       |   18 ++++++++----------
 mm/swapfile.c                   |   24 ++++++++++++------------
 10 files changed, 40 insertions(+), 46 deletions(-)

diff -puN arch/parisc/kernel/sys_parisc.c~RD11-f_mapping3-B6 arch/parisc/kernel/sys_parisc.c
--- 25/arch/parisc/kernel/sys_parisc.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/arch/parisc/kernel/sys_parisc.c	2003-12-14 19:09:30.000000000 -0800
@@ -93,17 +93,13 @@ static unsigned long get_shared_area(str
 unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
 		unsigned long len, unsigned long pgoff, unsigned long flags)
 {
-	struct inode *inode;
-
 	if (len &gt; TASK_SIZE)
 		return -ENOMEM;
 	if (!addr)
 		addr = TASK_UNMAPPED_BASE;
 
-	inode = filp ? filp-&gt;f_dentry-&gt;d_inode : NULL;
-
-	if (inode &amp;&amp; (flags &amp; MAP_SHARED)) {
-		addr = get_shared_area(inode-&gt;i_mapping, addr, len, pgoff);
+	if (filp &amp;&amp; (flags &amp; MAP_SHARED)) {
+		addr = get_shared_area(filp-&gt;f_mapping, addr, len, pgoff);
 	} else {
 		addr = get_unshared_area(addr, len);
 	}
diff -puN drivers/block/loop.c~RD11-f_mapping3-B6 drivers/block/loop.c
--- 25/drivers/block/loop.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/drivers/block/loop.c	2003-12-14 19:09:30.000000000 -0800
@@ -659,6 +659,7 @@ static int loop_set_fd(struct loop_devic
 	struct file	*file;
 	struct inode	*inode;
 	struct block_device *lo_device = NULL;
+	struct address_space *mapping;
 	unsigned lo_blocksize;
 	int		lo_flags = 0;
 	int		error;
@@ -675,12 +676,14 @@ static int loop_set_fd(struct loop_devic
 	if (!file)
 		goto out;
 
-	error = -EINVAL;
-	inode = file-&gt;f_dentry-&gt;d_inode;
+	mapping = file-&gt;f_mapping;
+	inode = mapping-&gt;host;
 
 	if (!(file-&gt;f_mode &amp; FMODE_WRITE))
 		lo_flags |= LO_FLAGS_READ_ONLY;
 
+	error = -EINVAL;
+
 	if (S_ISBLK(inode-&gt;i_mode)) {
 		lo_device = inode-&gt;i_bdev;
 		if (lo_device == bdev) {
@@ -691,7 +694,7 @@ static int loop_set_fd(struct loop_devic
 		if (bdev_read_only(lo_device))
 			lo_flags |= LO_FLAGS_READ_ONLY;
 	} else if (S_ISREG(inode-&gt;i_mode)) {
-		struct address_space_operations *aops = inode-&gt;i_mapping-&gt;a_ops;
+		struct address_space_operations *aops = mapping-&gt;a_ops;
 		/*
 		 * If we can't read - sorry. If we only can't write - well,
 		 * it's going to be read-only.
@@ -727,9 +730,8 @@ static int loop_set_fd(struct loop_devic
 		fput(file);
 		goto out_putf;
 	}
-	lo-&gt;old_gfp_mask = mapping_gfp_mask(inode-&gt;i_mapping);
-	mapping_set_gfp_mask(inode-&gt;i_mapping,
-			     lo-&gt;old_gfp_mask &amp; ~(__GFP_IO|__GFP_FS));
+	lo-&gt;old_gfp_mask = mapping_gfp_mask(mapping);
+	mapping_set_gfp_mask(mapping, lo-&gt;old_gfp_mask &amp; ~(__GFP_IO|__GFP_FS));
 
 	set_blocksize(bdev, lo_blocksize);
 
diff -puN fs/fcntl.c~RD11-f_mapping3-B6 fs/fcntl.c
--- 25/fs/fcntl.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/fs/fcntl.c	2003-12-14 19:09:30.000000000 -0800
@@ -229,8 +229,8 @@ static int setfl(int fd, struct file * f
 		   arg |= O_NONBLOCK;
 
 	if (arg &amp; O_DIRECT) {
-		if (!inode-&gt;i_mapping || !inode-&gt;i_mapping-&gt;a_ops ||
-			!inode-&gt;i_mapping-&gt;a_ops-&gt;direct_IO)
+		if (!filp-&gt;f_mapping || !filp-&gt;f_mapping-&gt;a_ops ||
+			!filp-&gt;f_mapping-&gt;a_ops-&gt;direct_IO)
 				return -EINVAL;
 	}
 
diff -puN fs/ioctl.c~RD11-f_mapping3-B6 fs/ioctl.c
--- 25/fs/ioctl.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/fs/ioctl.c	2003-12-14 19:09:30.000000000 -0800
@@ -22,7 +22,7 @@ static int file_ioctl(struct file *filp,
 	switch (cmd) {
 		case FIBMAP:
 		{
-			struct address_space *mapping = inode-&gt;i_mapping;
+			struct address_space *mapping = filp-&gt;f_mapping;
 			int res;
 			/* do we support this mess? */
 			if (!mapping-&gt;a_ops-&gt;bmap)
diff -puN fs/locks.c~RD11-f_mapping3-B6 fs/locks.c
--- 25/fs/locks.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/fs/locks.c	2003-12-14 19:09:30.000000000 -0800
@@ -1454,7 +1454,7 @@ int fcntl_setlk(struct file *filp, unsig
 	 */
 	if (IS_MANDLOCK(inode) &amp;&amp;
 	    (inode-&gt;i_mode &amp; (S_ISGID | S_IXGRP)) == S_ISGID) {
-		struct address_space *mapping = inode-&gt;i_mapping;
+		struct address_space *mapping = filp-&gt;f_mapping;
 
 		if (!list_empty(&amp;mapping-&gt;i_mmap_shared)) {
 			error = -EAGAIN;
@@ -1592,7 +1592,7 @@ int fcntl_setlk64(struct file *filp, uns
 	 */
 	if (IS_MANDLOCK(inode) &amp;&amp;
 	    (inode-&gt;i_mode &amp; (S_ISGID | S_IXGRP)) == S_ISGID) {
-		struct address_space *mapping = inode-&gt;i_mapping;
+		struct address_space *mapping = filp-&gt;f_mapping;
 
 		if (!list_empty(&amp;mapping-&gt;i_mmap_shared)) {
 			error = -EAGAIN;
diff -puN fs/open.c~RD11-f_mapping3-B6 fs/open.c
--- 25/fs/open.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/fs/open.c	2003-12-14 19:09:30.000000000 -0800
@@ -793,8 +793,8 @@ struct file *dentry_open(struct dentry *
 
 	/* NB: we're sure to have correct a_ops only after f_op-&gt;open */
 	if (f-&gt;f_flags &amp; O_DIRECT) {
-		if (!inode-&gt;i_mapping || !inode-&gt;i_mapping-&gt;a_ops ||
-			!inode-&gt;i_mapping-&gt;a_ops-&gt;direct_IO) {
+		if (!f-&gt;f_mapping || !f-&gt;f_mapping-&gt;a_ops ||
+			!f-&gt;f_mapping-&gt;a_ops-&gt;direct_IO) {
 				fput(f);
 				f = ERR_PTR(-EINVAL);
 		}
diff -puN kernel/fork.c~RD11-f_mapping3-B6 kernel/fork.c
--- 25/kernel/fork.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/kernel/fork.c	2003-12-14 19:09:30.000000000 -0800
@@ -316,9 +316,9 @@ static inline int dup_mmap(struct mm_str
 				atomic_dec(&amp;inode-&gt;i_writecount);
       
 			/* insert tmp into the share list, just after mpnt */
-			down(&amp;inode-&gt;i_mapping-&gt;i_shared_sem);
+			down(&amp;file-&gt;f_mapping-&gt;i_shared_sem);
 			list_add_tail(&amp;tmp-&gt;shared, &amp;mpnt-&gt;shared);
-			up(&amp;inode-&gt;i_mapping-&gt;i_shared_sem);
+			up(&amp;file-&gt;f_mapping-&gt;i_shared_sem);
 		}
 
 		/*
diff -puN mm/fadvise.c~RD11-f_mapping3-B6 mm/fadvise.c
--- 25/mm/fadvise.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/mm/fadvise.c	2003-12-14 19:09:30.000000000 -0800
@@ -23,7 +23,6 @@
 asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice)
 {
 	struct file *file = fget(fd);
-	struct inode *inode;
 	struct address_space *mapping;
 	struct backing_dev_info *bdi;
 	pgoff_t start_index;
@@ -33,8 +32,7 @@ asmlinkage long sys_fadvise64_64(int fd,
 	if (!file)
 		return -EBADF;
 
-	inode = file-&gt;f_dentry-&gt;d_inode;
-	mapping = inode-&gt;i_mapping;
+	mapping = file-&gt;f_mapping;
 	if (!mapping) {
 		ret = -EINVAL;
 		goto out;
diff -puN mm/mmap.c~RD11-f_mapping3-B6 mm/mmap.c
--- 25/mm/mmap.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/mm/mmap.c	2003-12-14 19:09:30.000000000 -0800
@@ -80,11 +80,10 @@ static void remove_shared_vm_struct(stru
 	struct file *file = vma-&gt;vm_file;
 
 	if (file) {
-		struct inode *inode = file-&gt;f_dentry-&gt;d_inode;
-
-		down(&amp;inode-&gt;i_mapping-&gt;i_shared_sem);
-		__remove_shared_vm_struct(vma, inode);
-		up(&amp;inode-&gt;i_mapping-&gt;i_shared_sem);
+		struct address_space *mapping = file-&gt;f_mapping;
+		down(&amp;mapping-&gt;i_shared_sem);
+		__remove_shared_vm_struct(vma, file-&gt;f_dentry-&gt;d_inode);
+		up(&amp;mapping-&gt;i_shared_sem);
 	}
 }
 
@@ -235,11 +234,10 @@ static inline void __vma_link_file(struc
 
 	file = vma-&gt;vm_file;
 	if (file) {
-		struct inode * inode = file-&gt;f_dentry-&gt;d_inode;
-		struct address_space *mapping = inode-&gt;i_mapping;
+		struct address_space *mapping = file-&gt;f_mapping;
 
 		if (vma-&gt;vm_flags &amp; VM_DENYWRITE)
-			atomic_dec(&amp;inode-&gt;i_writecount);
+			atomic_dec(&amp;file-&gt;f_dentry-&gt;d_inode-&gt;i_writecount);
 
 		if (vma-&gt;vm_flags &amp; VM_SHARED)
 			list_add_tail(&amp;vma-&gt;shared, &amp;mapping-&gt;i_mmap_shared);
@@ -383,7 +381,7 @@ static int vma_merge(struct mm_struct *m
 	if (vm_flags &amp; VM_SPECIAL)
 		return 0;
 
-	i_shared_sem = file ? &amp;inode-&gt;i_mapping-&gt;i_shared_sem : NULL;
+	i_shared_sem = file ? &amp;file-&gt;f_mapping-&gt;i_shared_sem : NULL;
 
 	if (!prev) {
 		prev = rb_entry(rb_parent, struct vm_area_struct, vm_rb);
@@ -1203,7 +1201,7 @@ int split_vma(struct mm_struct * mm, str
 		new-&gt;vm_ops-&gt;open(new);
 
 	if (vma-&gt;vm_file)
-		 mapping = vma-&gt;vm_file-&gt;f_dentry-&gt;d_inode-&gt;i_mapping;
+		 mapping = vma-&gt;vm_file-&gt;f_mapping;
 
 	if (mapping)
 		down(&amp;mapping-&gt;i_shared_sem);
diff -puN mm/swapfile.c~RD11-f_mapping3-B6 mm/swapfile.c
--- 25/mm/swapfile.c~RD11-f_mapping3-B6	2003-12-14 19:09:30.000000000 -0800
+++ 25-akpm/mm/swapfile.c	2003-12-14 19:09:30.000000000 -0800
@@ -912,7 +912,7 @@ static int setup_swap_extents(struct swa
 	sector_t last_block;
 	int ret;
 
-	inode = sis-&gt;swap_file-&gt;f_dentry-&gt;d_inode;
+	inode = sis-&gt;swap_file-&gt;f_mapping-&gt;host;
 	if (S_ISBLK(inode-&gt;i_mode)) {
 		ret = add_swap_extent(sis, 0, sis-&gt;max, 0);
 		goto done;
@@ -1099,13 +1099,13 @@ asmlinkage long sys_swapoff(const char _
 	swap_device_unlock(p);
 	swap_list_unlock();
 	vfree(swap_map);
-	if (S_ISBLK(swap_file-&gt;f_dentry-&gt;d_inode-&gt;i_mode)) {
+	if (S_ISBLK(mapping-&gt;host-&gt;i_mode)) {
 		struct block_device *bdev;
-		bdev = swap_file-&gt;f_dentry-&gt;d_inode-&gt;i_bdev;
+		bdev = mapping-&gt;host-&gt;i_bdev;
 		set_blocksize(bdev, p-&gt;old_block_size);
 		bd_release(bdev);
 	} else {
-		up(&amp;swap_file-&gt;f_mapping-&gt;host-&gt;i_sem);
+		up(&amp;mapping-&gt;host-&gt;i_sem);
 	}
 	filp_close(swap_file, NULL);
 	err = 0;
@@ -1231,8 +1231,8 @@ asmlinkage long sys_swapon(const char __
 	int swapfilesize;
 	unsigned short *swap_map;
 	struct page *page = NULL;
-	struct inode *inode;
-	struct inode *downed_inode = NULL;
+	struct inode *inode = NULL;
+	int did_down = 0;
 
 	if (!capable(CAP_SYS_ADMIN))
 		return -EPERM;
@@ -1279,8 +1279,8 @@ asmlinkage long sys_swapon(const char __
 	}
 
 	p-&gt;swap_file = swap_file;
-	inode = swap_file-&gt;f_dentry-&gt;d_inode;
 	mapping = swap_file-&gt;f_mapping;
+	inode = mapping-&gt;host;
 
 	error = -EBUSY;
 	for (i = 0; i &lt; nr_swapfiles; i++) {
@@ -1307,13 +1307,13 @@ asmlinkage long sys_swapon(const char __
 		p-&gt;bdev = bdev;
 	} else if (S_ISREG(inode-&gt;i_mode)) {
 		p-&gt;bdev = inode-&gt;i_sb-&gt;s_bdev;
-		downed_inode = mapping-&gt;host;
-		down(&amp;downed_inode-&gt;i_sem);
+		down(&amp;inode-&gt;i_sem);
+		did_down = 1;
 	} else {
 		goto bad_swap;
 	}
 
-	swapfilesize = i_size_read(mapping-&gt;host) &gt;&gt; PAGE_SHIFT;
+	swapfilesize = i_size_read(inode) &gt;&gt; PAGE_SHIFT;
 
 	/*
 	 * Read the swap header.
@@ -1465,8 +1465,8 @@ out:
 	}
 	if (name)
 		putname(name);
-	if (error &amp;&amp; downed_inode)
-		up(&amp;downed_inode-&gt;i_sem);
+	if (error &amp;&amp; did_down)
+		up(&amp;inode-&gt;i_sem);
 	return error;
 }
 

_
</pre></body></html>