Commit 61b875e8 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Richard Weinberger

jffs2: Remove jffs2_gc_fetch_page and jffs2_gc_release_page

Merge these two helpers into the only callers to get rid of some
amazingly bad calling conventions.
Suggested-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent f2538f99
...@@ -678,33 +678,6 @@ struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c, ...@@ -678,33 +678,6 @@ struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,
return JFFS2_INODE_INFO(inode); return JFFS2_INODE_INFO(inode);
} }
unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c,
struct jffs2_inode_info *f,
unsigned long offset,
unsigned long *priv)
{
struct inode *inode = OFNI_EDONI_2SFFJ(f);
struct page *pg;
pg = read_cache_page(inode->i_mapping, offset >> PAGE_SHIFT,
jffs2_do_readpage_unlock, inode);
if (IS_ERR(pg))
return (void *)pg;
*priv = (unsigned long)pg;
return kmap(pg);
}
void jffs2_gc_release_page(struct jffs2_sb_info *c,
unsigned char *ptr,
unsigned long *priv)
{
struct page *pg = (void *)*priv;
kunmap(pg);
put_page(pg);
}
static int jffs2_flash_setup(struct jffs2_sb_info *c) { static int jffs2_flash_setup(struct jffs2_sb_info *c) {
int ret = 0; int ret = 0;
......
...@@ -1165,12 +1165,13 @@ static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era ...@@ -1165,12 +1165,13 @@ static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era
struct jffs2_inode_info *f, struct jffs2_full_dnode *fn, struct jffs2_inode_info *f, struct jffs2_full_dnode *fn,
uint32_t start, uint32_t end) uint32_t start, uint32_t end)
{ {
struct inode *inode = OFNI_EDONI_2SFFJ(f);
struct jffs2_full_dnode *new_fn; struct jffs2_full_dnode *new_fn;
struct jffs2_raw_inode ri; struct jffs2_raw_inode ri;
uint32_t alloclen, offset, orig_end, orig_start; uint32_t alloclen, offset, orig_end, orig_start;
int ret = 0; int ret = 0;
unsigned char *comprbuf = NULL, *writebuf; unsigned char *comprbuf = NULL, *writebuf;
unsigned long pg; struct page *page;
unsigned char *pg_ptr; unsigned char *pg_ptr;
memset(&ri, 0, sizeof(ri)); memset(&ri, 0, sizeof(ri));
...@@ -1325,15 +1326,18 @@ static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era ...@@ -1325,15 +1326,18 @@ static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era
* end up here trying to GC the *same* page that jffs2_write_begin() is * end up here trying to GC the *same* page that jffs2_write_begin() is
* trying to write out, read_cache_page() will not deadlock. */ * trying to write out, read_cache_page() will not deadlock. */
mutex_unlock(&f->sem); mutex_unlock(&f->sem);
pg_ptr = jffs2_gc_fetch_page(c, f, start, &pg); page = read_cache_page(inode->i_mapping, start >> PAGE_SHIFT,
mutex_lock(&f->sem); jffs2_do_readpage_unlock, inode);
if (IS_ERR(page)) {
if (IS_ERR(pg_ptr)) {
pr_warn("read_cache_page() returned error: %ld\n", pr_warn("read_cache_page() returned error: %ld\n",
PTR_ERR(pg_ptr)); PTR_ERR(page));
return PTR_ERR(pg_ptr); mutex_lock(&f->sem);
return PTR_ERR(page);
} }
pg_ptr = kmap(page);
mutex_lock(&f->sem);
offset = start; offset = start;
while(offset < orig_end) { while(offset < orig_end) {
uint32_t datalen; uint32_t datalen;
...@@ -1396,6 +1400,7 @@ static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era ...@@ -1396,6 +1400,7 @@ static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era
} }
} }
jffs2_gc_release_page(c, pg_ptr, &pg); kunmap(page);
put_page(page);
return ret; return ret;
} }
...@@ -183,9 +183,6 @@ unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c, ...@@ -183,9 +183,6 @@ unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c,
struct jffs2_inode_info *f, struct jffs2_inode_info *f,
unsigned long offset, unsigned long offset,
unsigned long *priv); unsigned long *priv);
void jffs2_gc_release_page(struct jffs2_sb_info *c,
unsigned char *pg,
unsigned long *priv);
void jffs2_flash_cleanup(struct jffs2_sb_info *c); void jffs2_flash_cleanup(struct jffs2_sb_info *c);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment