}
void jffs2_link_node_ref(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
- struct jffs2_raw_node_ref *ref, uint32_t len)
+ struct jffs2_raw_node_ref *ref, uint32_t len,
+ struct jffs2_inode_cache *ic)
{
if (!jeb->first_node)
jeb->first_node = ref;
}
jeb->last_node = ref;
+ if (ic) {
+ ref->next_in_ino = ic->nodes;
+ ic->nodes = ref;
+ } else {
+ ref->next_in_ino = NULL;
+ }
+
switch(ref_flags(ref)) {
case REF_UNCHECKED:
c->unchecked_size += len;
ref->flash_offset = jeb->offset + c->sector_size - jeb->free_size;
ref->flash_offset |= REF_OBSOLETE;
- ref->next_in_ino = 0;
#ifdef TEST_TOTLEN
ref->__totlen = size;
#endif
- jffs2_link_node_ref(c, jeb, ref, size);
+ jffs2_link_node_ref(c, jeb, ref, size, NULL);
}
return 0;