git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
fs
/
jfs
/
jfs_metapage.c
diff --git
a/fs/jfs/jfs_metapage.c
b/fs/jfs/jfs_metapage.c
index
f5afc12
..
c82d076
100644
(file)
--- a/
fs/jfs/jfs_metapage.c
+++ b/
fs/jfs/jfs_metapage.c
@@
-104,9
+104,10
@@
static inline int insert_metapage(struct page *page, struct metapage *mp)
if (PagePrivate(page))
a = mp_anchor(page);
else {
if (PagePrivate(page))
a = mp_anchor(page);
else {
- a = k
z
alloc(sizeof(struct meta_anchor), GFP_NOFS);
+ a = k
m
alloc(sizeof(struct meta_anchor), GFP_NOFS);
if (!a)
return -ENOMEM;
if (!a)
return -ENOMEM;
+ memset(a, 0, sizeof(struct meta_anchor));
set_page_private(page, (unsigned long)a);
SetPagePrivate(page);
kmap(page);
set_page_private(page, (unsigned long)a);
SetPagePrivate(page);
kmap(page);
@@
-220,8
+221,8
@@
int __init metapage_init(void)
if (metapage_cache == NULL)
return -ENOMEM;
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);
if (metapage_mempool == NULL) {
kmem_cache_destroy(metapage_cache);
@@
-257,7
+258,7
@@
static sector_t metapage_get_blocks(struct inode *inode, sector_t lblock,
int rc = 0;
int xflag;
s64 xaddr;
int rc = 0;
int xflag;
s64 xaddr;
- sector_t file_blocks = (inode->i_size + inode->i_
sb->s_bloc
ksize - 1) >>
+ sector_t file_blocks = (inode->i_size + inode->i_
bl
ksize - 1) >>
inode->i_blkbits;
if (lblock >= file_blocks)
inode->i_blkbits;
if (lblock >= file_blocks)
@@
-568,16
+569,17
@@
static int metapage_releasepage(struct page *page, gfp_t gfp_mask)
return ret;
}
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(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,
.readpage = metapage_readpage,
.writepage = metapage_writepage,
.sync_page = block_sync_page,
@@
-632,9
+634,10
@@
struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
}
SetPageUptodate(page);
} else {
}
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)) {
if (IS_ERR(page) || !PageUptodate(page)) {
- jfs_err("read_
mapping
_page failed!");
+ jfs_err("read_
cache
_page failed!");
return NULL;
}
lock_page(page);
return NULL;
}
lock_page(page);