4 fs/ext3/ext3-exports.c | 3 ++
5 fs/ext3/inode.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
6 2 files changed, 58 insertions(+)
8 --- linux-2.4.20-l18/fs/ext3/inode.c~ext3-map_inode_page Tue Jul 8 20:07:23 2003
9 +++ linux-2.4.20-l18-phil/fs/ext3/inode.c Wed Jul 9 03:56:41 2003
10 @@ -2867,3 +2867,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.20-l18/fs/ext3/ext3-exports.c~ext3-map_inode_page Tue Jul 8 20:07:10 2003
70 +++ linux-2.4.20-l18-phil/fs/ext3/ext3-exports.c Tue Jul 8 20:09:02 2003
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);