D1(printk(KERN_DEBUG "JFFS2: Removing ino #%u with nlink == zero.\n", ic->ino)); 
dbg_fsbuild("removing ino #%u with nlink == zero.\n", ic->ino); 
static void jffs2_build_remove_unlinked_inode(struct jffs2_sb_info *c, struct jffs2_inode_cache *ic, struct jffs2_full_dirent **dead_fds){	struct jffs2_raw_node_ref *raw;	struct jffs2_full_dirent *fd;	D1(printk(KERN_DEBUG "JFFS2: Removing ino #%u with nlink == zero.\n", ic->ino));		raw = ic->nodes;	while (raw != (void *)ic) {		struct jffs2_raw_node_ref *next = raw->next_in_ino;		D1(printk(KERN_DEBUG "obsoleting node at 0x%08x\n", ref_offset(raw)));		jffs2_mark_node_obsolete(c, raw);		raw = next;	}	if (ic->scan_dents) {		int whinged = 0;		D1(printk(KERN_DEBUG "Inode #%u was a directory which may have children...\n", ic->ino));		while(ic->scan_dents) {			struct jffs2_inode_cache *child_ic;			fd = ic->scan_dents;			ic->scan_dents = fd->next;			if (!fd->ino) {				/* It's a deletion dirent. Ignore it */				D1(printk(KERN_DEBUG "Child \"%s\" is a deletion dirent, skipping...\n", fd->name));				jffs2_free_full_dirent(fd);				continue;			}			if (!whinged) {				whinged = 1;				printk(KERN_NOTICE "Inode #%u was a directory with children - removing those too...\n", ic->ino);			}			D1(printk(KERN_DEBUG "Removing child \"%s\", ino #%u\n",				  fd->name, fd->ino));						child_ic = jffs2_get_ino_cache(c, fd->ino);			if (!child_ic) {				printk(KERN_NOTICE "Cannot remove child \"%s\", ino #%u, because it doesn't exist\n", fd->name, fd->ino);				jffs2_free_full_dirent(fd);				continue;			}			/* Reduce nlink of the child. If it's now zero, stick it on the 			   dead_fds list to be cleaned up later. Else just free the fd */			child_ic->nlink--;						if (!child_ic->nlink) {				D1(printk(KERN_DEBUG "Inode #%u (\"%s\") has now got zero nlink. Adding to dead_fds list.\n",					  fd->ino, fd->name));				fd->next = *dead_fds;				*dead_fds = fd;			} else {				D1(printk(KERN_DEBUG "Inode #%u (\"%s\") has now got nlink %d. Ignoring.\n",					  fd->ino, fd->name, child_ic->nlink));				jffs2_free_full_dirent(fd);			}		}	}	/*	   We don't delete the inocache from the hash list and free it yet. 	   The erase code will do that, when all the nodes are completely gone.	*/}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/733802d974e5af42acb7cd61b16c0ce6dd03b7ed/build.c/buggy/fs/jffs2/build.c