[JFFS2] Add 'jeb' argument to jffs2_prealloc_raw_node_refs()
Preallocation of refs is shortly going to be a per-eraseblock thing, rather than per-filesystem. Add the required argument to the function. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
Родитель
f61579c337
Коммит
046b8b9808
|
@ -383,7 +383,7 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb
|
|||
.totlen = cpu_to_je32(c->cleanmarker_size)
|
||||
};
|
||||
|
||||
jffs2_prealloc_raw_node_refs(c, 1);
|
||||
jffs2_prealloc_raw_node_refs(c, jeb, 1);
|
||||
|
||||
marker.hdr_crc = cpu_to_je32(crc32(0, &marker, sizeof(struct jffs2_unknown_node)-4));
|
||||
|
||||
|
|
|
@ -190,7 +190,8 @@ void jffs2_free_tmp_dnode_info(struct jffs2_tmp_dnode_info *x)
|
|||
kmem_cache_free(tmp_dnode_info_slab, x);
|
||||
}
|
||||
|
||||
int jffs2_prealloc_raw_node_refs(struct jffs2_sb_info *c, int nr)
|
||||
int jffs2_prealloc_raw_node_refs(struct jffs2_sb_info *c,
|
||||
struct jffs2_eraseblock *jeb, int nr)
|
||||
{
|
||||
struct jffs2_raw_node_ref *p = c->refs;
|
||||
|
||||
|
|
|
@ -378,7 +378,8 @@ struct jffs2_raw_inode *jffs2_alloc_raw_inode(void);
|
|||
void jffs2_free_raw_inode(struct jffs2_raw_inode *);
|
||||
struct jffs2_tmp_dnode_info *jffs2_alloc_tmp_dnode_info(void);
|
||||
void jffs2_free_tmp_dnode_info(struct jffs2_tmp_dnode_info *);
|
||||
int jffs2_prealloc_raw_node_refs(struct jffs2_sb_info *c, int nr);
|
||||
int jffs2_prealloc_raw_node_refs(struct jffs2_sb_info *c,
|
||||
struct jffs2_eraseblock *jeb, int nr);
|
||||
struct jffs2_raw_node_ref *__jffs2_alloc_raw_node_ref(void);
|
||||
void __jffs2_free_raw_node_ref(struct jffs2_raw_node_ref *);
|
||||
struct jffs2_node_frag *jffs2_alloc_node_frag(void);
|
||||
|
|
|
@ -138,7 +138,7 @@ int jffs2_reserve_space(struct jffs2_sb_info *c, uint32_t minsize,
|
|||
}
|
||||
spin_unlock(&c->erase_completion_lock);
|
||||
if (!ret)
|
||||
ret = jffs2_prealloc_raw_node_refs(c, 1);
|
||||
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
|
||||
if (ret)
|
||||
up(&c->alloc_sem);
|
||||
return ret;
|
||||
|
@ -161,7 +161,7 @@ int jffs2_reserve_space_gc(struct jffs2_sb_info *c, uint32_t minsize,
|
|||
}
|
||||
spin_unlock(&c->erase_completion_lock);
|
||||
if (!ret)
|
||||
ret = jffs2_prealloc_raw_node_refs(c, 1);
|
||||
ret = jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -244,7 +244,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
|
|||
|
||||
D1(printk(KERN_DEBUG "jffs2_scan_medium(): Skipping %d bytes in nextblock to ensure page alignment\n",
|
||||
skip));
|
||||
jffs2_prealloc_raw_node_refs(c, 1);
|
||||
jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);
|
||||
jffs2_scan_dirty_space(c, c->nextblock, skip);
|
||||
}
|
||||
#endif
|
||||
|
@ -576,7 +576,7 @@ scan_more:
|
|||
jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
|
||||
|
||||
/* Make sure there are node refs available for use */
|
||||
err = jffs2_prealloc_raw_node_refs(c, 2);
|
||||
err = jffs2_prealloc_raw_node_refs(c, jeb, 2);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
|
|
@ -400,7 +400,7 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras
|
|||
dbg_summary("processing summary index %d\n", i);
|
||||
|
||||
/* Make sure there's a spare ref for dirty space */
|
||||
err = jffs2_prealloc_raw_node_refs(c, 2);
|
||||
err = jffs2_prealloc_raw_node_refs(c, jeb, 2);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -630,7 +630,7 @@ int jffs2_sum_scan_sumnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb
|
|||
return ret; /* real error */
|
||||
|
||||
/* for PARANOIA_CHECK */
|
||||
ret = jffs2_prealloc_raw_node_refs(c, 2);
|
||||
ret = jffs2_prealloc_raw_node_refs(c, jeb, 2);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -815,9 +815,9 @@ int jffs2_sum_write_sumnode(struct jffs2_sb_info *c)
|
|||
dbg_summary("called\n");
|
||||
|
||||
spin_unlock(&c->erase_completion_lock);
|
||||
jffs2_prealloc_raw_node_refs(c, 1);
|
||||
|
||||
jeb = c->nextblock;
|
||||
jffs2_prealloc_raw_node_refs(c, jeb, 1);
|
||||
|
||||
if (!c->summary->sum_num || !c->summary->sum_list_head) {
|
||||
JFFS2_WARNING("Empty summary info!!!\n");
|
||||
|
|
|
@ -179,13 +179,13 @@ static void jffs2_wbuf_recover(struct jffs2_sb_info *c)
|
|||
unsigned char *buf;
|
||||
uint32_t start, end, ofs, len;
|
||||
|
||||
if (jffs2_prealloc_raw_node_refs(c, c->reserved_refs + 1))
|
||||
jeb = &c->blocks[c->wbuf_ofs / c->sector_size];
|
||||
|
||||
if (jffs2_prealloc_raw_node_refs(c, jeb, c->reserved_refs + 1))
|
||||
return;
|
||||
|
||||
spin_lock(&c->erase_completion_lock);
|
||||
|
||||
jeb = &c->blocks[c->wbuf_ofs / c->sector_size];
|
||||
|
||||
jffs2_block_refile(c, jeb, REFILE_NOTEMPTY);
|
||||
|
||||
/* Find the first node to be recovered, by skipping over every
|
||||
|
@ -417,7 +417,7 @@ static int __jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad)
|
|||
if (!c->wbuf_len) /* already checked c->wbuf above */
|
||||
return 0;
|
||||
|
||||
if (jffs2_prealloc_raw_node_refs(c, c->reserved_refs + 1))
|
||||
if (jffs2_prealloc_raw_node_refs(c, c->nextblock, c->reserved_refs + 1))
|
||||
return -ENOMEM;
|
||||
|
||||
/* claim remaining space on the page
|
||||
|
|
Загрузка…
Ссылка в новой задаче