4 fs/ext3/ext3-exports.c | 3 ++
5 fs/ext3/inode.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
6 2 files changed, 58 insertions(+)
8 --- linux-2.4.18-p4smp/fs/ext3/inode.c~ext3-map_inode_page_2.4.18 2003-07-21 22:51:45.000000000 -0600
9 +++ linux-2.4.18-p4smp-braam/fs/ext3/inode.c 2003-07-21 22:51:47.000000000 -0600
10 @@ -3003,3 +3003,58 @@ int ext3_prep_san_write(struct inode *in
15 +int ext3_map_inode_page(struct inode *inode, struct page *page,
16 + unsigned long *blocks, int *created, int create)
18 + unsigned int blocksize, blocks_per_page;
19 + unsigned long iblock;
20 + struct buffer_head dummy;
22 + int i, rc = 0, failed = 0, needed_blocks;
24 + blocksize = inode->i_sb->s_blocksize;
25 + blocks_per_page = PAGE_SIZE >> inode->i_sb->s_blocksize_bits;
26 + iblock = page->index >> (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
28 + for (i = 0; i < blocks_per_page; i++, iblock++) {
29 + blocks[i] = ext3_bmap(inode->i_mapping, iblock);
30 + if (blocks[i] == 0) {
38 + if (failed == 0 || create == 0)
41 + needed_blocks = ext3_writepage_trans_blocks(inode) * failed;
43 + handle = ext3_journal_start(inode, needed_blocks);
46 + return PTR_ERR(handle);
48 + iblock = page->index >> (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
49 + for (i = 0; i < blocks_per_page; i++, iblock++) {
53 + rc = ext3_get_block_handle(handle, inode, iblock, &dummy, 1);
55 + printk(KERN_INFO "ext3_map_inode_page: error reading "
56 + "block %ld\n", iblock);
59 + blocks[i] = dummy.b_blocknr;
65 + ext3_journal_stop(handle, inode);
69 --- linux-2.4.18-p4smp/fs/ext3/ext3-exports.c~ext3-map_inode_page_2.4.18 2003-07-21 22:51:45.000000000 -0600
70 +++ linux-2.4.18-p4smp-braam/fs/ext3/ext3-exports.c 2003-07-21 22:51:47.000000000 -0600
73 int ext3_prep_san_write(struct inode *inode, long *blocks,
74 int nblocks, loff_t newsize);
75 +int ext3_map_inode_page(struct inode *inode, struct page *page,
76 + unsigned long *block, int *created, int create);
78 EXPORT_SYMBOL(ext3_force_commit);
79 EXPORT_SYMBOL(ext3_bread);
80 @@ -18,3 +20,4 @@ EXPORT_SYMBOL(ext3_xattr_get);
81 EXPORT_SYMBOL(ext3_xattr_list);
82 EXPORT_SYMBOL(ext3_xattr_set);
83 EXPORT_SYMBOL(ext3_prep_san_write);
84 +EXPORT_SYMBOL(ext3_map_inode_page);