!(c->flags & JFFS2_SB_FLAG_MOUNTING)) { 
!(c->flags & (JFFS2_SB_FLAG_SCANNING | JFFS2_SB_FLAG_BUILDING))) { 
void jffs2_mark_node_obsolete(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref){	struct jffs2_eraseblock *jeb;	int blocknr;	struct jffs2_unknown_node n;	int ret, addedsize;	size_t retlen;	if(!ref) {		printk(KERN_NOTICE "EEEEEK. jffs2_mark_node_obsolete called with NULL node\n");		return;	}	if (ref_obsolete(ref)) {		D1(printk(KERN_DEBUG "jffs2_mark_node_obsolete called with already obsolete node at 0x%08x\n", ref_offset(ref)));		return;	}	blocknr = ref->flash_offset / c->sector_size;	if (blocknr >= c->nr_blocks) {		printk(KERN_NOTICE "raw node at 0x%08x is off the end of device!\n", ref->flash_offset);		BUG();	}	jeb = &c->blocks[blocknr];	if (jffs2_can_mark_obsolete(c) && !jffs2_is_readonly(c) &&	    !(c->flags & JFFS2_SB_FLAG_MOUNTING)) {		/* Hm. This may confuse static lock analysis. If any of the above 		   three conditions is false, we're going to return from this 		   function without actually obliterating any nodes or freeing		   any jffs2_raw_node_refs. So we don't need to stop erases from		   happening, or protect against people holding an obsolete		   jffs2_raw_node_ref without the erase_completion_lock. */		down(&c->erase_free_sem);	}	spin_lock(&c->erase_completion_lock);	if (ref_flags(ref) == REF_UNCHECKED) {		D1(if (unlikely(jeb->unchecked_size < ref_totlen(c, jeb, ref))) {			printk(KERN_NOTICE "raw unchecked node of size 0x%08x freed from erase block %d at 0x%08x, but unchecked_size was already 0x%08x\n",			       ref_totlen(c, jeb, ref), blocknr, ref->flash_offset, jeb->used_size);			BUG();		})		D1(printk(KERN_DEBUG "Obsoleting previously unchecked node at 0x%08x of len %x: ", ref_offset(ref), ref_totlen(c, jeb, ref)));		jeb->unchecked_size -= ref_totlen(c, jeb, ref);		c->unchecked_size -= ref_totlen(c, jeb, ref);	} else {
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/31fbdf7aa5aac8a2a34f180a25deb157297a10c9/nodemgmt.c/buggy/fs/jffs2/nodemgmt.c