if (PagePrivate(page))
a = mp_anchor(page);
else {
- a = kzalloc(sizeof(struct meta_anchor), GFP_NOFS);
+ a = kmalloc(sizeof(struct meta_anchor), GFP_NOFS);
if (!a)
return -ENOMEM;
+ memset(a, 0, sizeof(struct meta_anchor));
set_page_private(page, (unsigned long)a);
SetPagePrivate(page);
kmap(page);
if (metapage_cache == NULL)
return -ENOMEM;
- metapage_mempool = mempool_create_slab_pool(METAPOOL_MIN_PAGES,
- metapage_cache);
+ metapage_mempool = mempool_create(METAPOOL_MIN_PAGES, mempool_alloc_slab,
+ mempool_free_slab, metapage_cache);
if (metapage_mempool == NULL) {
kmem_cache_destroy(metapage_cache);
int rc = 0;
int xflag;
s64 xaddr;
- sector_t file_blocks = (inode->i_size + inode->i_sb->s_blocksize - 1) >>
+ sector_t file_blocks = (inode->i_size + inode->i_blksize - 1) >>
inode->i_blkbits;
if (lblock >= file_blocks)
return ret;
}
-static void metapage_invalidatepage(struct page *page, unsigned long offset)
+static int metapage_invalidatepage(struct page *page, unsigned long offset)
{
BUG_ON(offset);
- BUG_ON(PageWriteback(page));
+ if (PageWriteback(page))
+ return 0;
- metapage_releasepage(page, 0);
+ return metapage_releasepage(page, 0);
}
-const struct address_space_operations jfs_metapage_aops = {
+struct address_space_operations jfs_metapage_aops = {
.readpage = metapage_readpage,
.writepage = metapage_writepage,
.sync_page = block_sync_page,
}
SetPageUptodate(page);
} else {
- page = read_mapping_page(mapping, page_index, NULL);
+ page = read_cache_page(mapping, page_index,
+ (filler_t *)mapping->a_ops->readpage, NULL);
if (IS_ERR(page) || !PageUptodate(page)) {
- jfs_err("read_mapping_page failed!");
+ jfs_err("read_cache_page failed!");
return NULL;
}
lock_page(page);