[JFFS2] Introduce jffs2_link_node_ref() function to reduce code duplication

The same sequence of code was repeated in many places, to add a new
struct jffs2_raw_node_ref to an eraseblock and adjust the space accounting
accordingly. Move it out-of-line.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
David Woodhouse
2006-05-20 19:45:26 +01:00
parent 0cfc7da3ff
commit f1f9671bd8
6 changed files with 68 additions and 122 deletions

View File

@@ -1046,3 +1046,37 @@ void jffs2_kill_fragtree(struct rb_root *root, struct jffs2_sb_info *c)
cond_resched();
}
}
void jffs2_link_node_ref(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
struct jffs2_raw_node_ref *ref, uint32_t len)
{
if (!jeb->first_node)
jeb->first_node = ref;
if (jeb->last_node)
jeb->last_node->next_phys = ref;
jeb->last_node = ref;
switch(ref_flags(ref)) {
case REF_UNCHECKED:
c->unchecked_size += len;
jeb->unchecked_size += len;
break;
case REF_NORMAL:
case REF_PRISTINE:
c->used_size += len;
jeb->used_size += len;
break;
case REF_OBSOLETE:
c->dirty_size += len;
jeb->used_size += len;
break;
}
c->free_size -= len;
jeb->free_size -= len;
/* Set __totlen field... for now */
ref->__totlen = len;
ref->next_phys = NULL;
}