if (jeb != c->nextblock || (ref_offset(new)) != jeb->offset + (c->sector_size - jeb->free_size)) { 
/* we could get some obsolete nodes after nextblock was refiled in wbuf.c */ if (  (c->nextblock || !ref_obsolete(new)) &&(jeb != c->nextblock || (ref_offset(new)) != jeb->offset + (c->sector_size - jeb->free_size))) { 
int jffs2_add_physical_node_ref(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *new){	struct jffs2_eraseblock *jeb;	uint32_t len;	jeb = &c->blocks[new->flash_offset / c->sector_size];	len = ref_totlen(c, jeb, new);	D1(printk(KERN_DEBUG "jffs2_add_physical_node_ref(): Node at 0x%x(%d), size 0x%x\n", ref_offset(new), ref_flags(new), len));#if 1	if (jeb != c->nextblock || (ref_offset(new)) != jeb->offset + (c->sector_size - jeb->free_size)) {		printk(KERN_WARNING "argh. node added in wrong place\n");		jffs2_free_raw_node_ref(new);		return -EINVAL;	}#endif	spin_lock(&c->erase_completion_lock);	if (!jeb->first_node)		jeb->first_node = new;	if (jeb->last_node)		jeb->last_node->next_phys = new;	jeb->last_node = new;	jeb->free_size -= len;	c->free_size -= len;	if (ref_obsolete(new)) {		jeb->dirty_size += len;		c->dirty_size += len;	} else {		jeb->used_size += len;		c->used_size += len;	}	if (!jeb->free_size && !jeb->dirty_size) {		/* If it lives on the dirty_list, jffs2_reserve_space will put it there */		D1(printk(KERN_DEBUG "Adding full erase block at 0x%08x to clean_list (free 0x%08x, dirty 0x%08x, used 0x%08x\n",			  jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));		if (jffs2_wbuf_dirty(c)) {			/* Flush the last write in the block if it's outstanding */			spin_unlock(&c->erase_completion_lock);			jffs2_flush_wbuf_pad(c);			spin_lock(&c->erase_completion_lock);		}		list_add_tail(&jeb->list, &c->clean_list);		c->nextblock = NULL;	}	ACCT_SANITY_CHECK(c,jeb);	D1(ACCT_PARANOIA_CHECK(jeb));	spin_unlock(&c->erase_completion_lock);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3118db3dfe7c16284d1d578e628fd87639b00731/nodemgmt.c/clean/fs/jffs2/nodemgmt.c