fs/ext3/inode.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+)
-Index: linux-2.4.18-p4smp/fs/ext3/inode.c
-===================================================================
---- linux-2.4.18-p4smp.orig/fs/ext3/inode.c Fri Jul 25 15:47:03 2003
-+++ linux-2.4.18-p4smp/fs/ext3/inode.c Fri Jul 25 15:47:04 2003
-@@ -3004,3 +3004,58 @@
+--- linux-2.4.18-chaos/fs/ext3/ext3-exports.c~ext3-map_inode_page_2.4.18 2003-10-17 14:38:21.000000000 +0400
++++ linux-2.4.18-chaos-alexey/fs/ext3/ext3-exports.c 2003-10-17 14:38:22.000000000 +0400
+@@ -9,6 +9,8 @@
+
+ int ext3_prep_san_write(struct inode *inode, long *blocks,
+ int nblocks, loff_t newsize);
++int ext3_map_inode_page(struct inode *inode, struct page *page,
++ unsigned long *block, int *created, int create);
+
+ EXPORT_SYMBOL(ext3_force_commit);
+ EXPORT_SYMBOL(ext3_bread);
+@@ -18,3 +20,4 @@ EXPORT_SYMBOL(ext3_xattr_get);
+ EXPORT_SYMBOL(ext3_xattr_list);
+ EXPORT_SYMBOL(ext3_xattr_set);
+ EXPORT_SYMBOL(ext3_prep_san_write);
++EXPORT_SYMBOL(ext3_map_inode_page);
+--- linux-2.4.18-chaos/fs/ext3/inode.c~ext3-map_inode_page_2.4.18 2003-10-17 14:38:21.000000000 +0400
++++ linux-2.4.18-chaos-alexey/fs/ext3/inode.c 2003-10-17 14:38:22.000000000 +0400
+@@ -3004,3 +3004,58 @@ int ext3_prep_san_write(struct inode *in
ret = ret2;
return ret;
}
+
+ blocksize = inode->i_sb->s_blocksize;
+ blocks_per_page = PAGE_SIZE >> inode->i_sb->s_blocksize_bits;
-+ iblock = page->index >> (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
++ iblock = page->index * blocks_per_page;
+
+ for (i = 0; i < blocks_per_page; i++, iblock++) {
+ blocks[i] = ext3_bmap(inode->i_mapping, iblock);
+ if (IS_ERR(handle))
+ return PTR_ERR(handle);
+
-+ iblock = page->index >> (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
++ iblock = page->index * blocks_per_page;
+ for (i = 0; i < blocks_per_page; i++, iblock++) {
+ if (blocks[i] != 0)
+ continue;
+ unlock_kernel();
+ return rc;
+}
-Index: linux-2.4.18-p4smp/fs/ext3/ext3-exports.c
-===================================================================
---- linux-2.4.18-p4smp.orig/fs/ext3/ext3-exports.c Fri Jul 25 15:47:03 2003
-+++ linux-2.4.18-p4smp/fs/ext3/ext3-exports.c Fri Jul 25 15:47:04 2003
-@@ -9,6 +9,8 @@
-
- int ext3_prep_san_write(struct inode *inode, long *blocks,
- int nblocks, loff_t newsize);
-+int ext3_map_inode_page(struct inode *inode, struct page *page,
-+ unsigned long *block, int *created, int create);
-
- EXPORT_SYMBOL(ext3_force_commit);
- EXPORT_SYMBOL(ext3_bread);
-@@ -18,3 +20,4 @@
- EXPORT_SYMBOL(ext3_xattr_list);
- EXPORT_SYMBOL(ext3_xattr_set);
- EXPORT_SYMBOL(ext3_prep_san_write);
-+EXPORT_SYMBOL(ext3_map_inode_page);
-Index: linux-2.4.18-p4smp/include/linux/mm.h
-===================================================================
---- linux-2.4.18-p4smp.orig/include/linux/mm.h Fri Jul 25 15:48:31 2003
-+++ linux-2.4.18-p4smp/include/linux/mm.h Fri Jul 25 15:49:41 2003
-@@ -186,6 +186,7 @@
- void *virtual; /* Kernel virtual address (NULL if
- not kmapped, ie. highmem) */
- #endif /* CONFIG_HIGHMEM || CONFIG_SPARC64 */
-+ unsigned long private;
- } mem_map_t;
-
- /*
+
+_