/* nilfs_gc_iget() - find or create gc inode with specified (ino,cno)  */
struct inode* nilfs_gc_iget(struct the_nilfs *nilfs, ino_t ino, __u64 cno)
/* nilfs_gc_iget() - find or create gc inode with specified (ino,cno)  */
struct inode* nilfs_gc_iget(struct the_nilfs *nilfs, ino_t ino, __u64 cno)
{
	struct hlist_head *head = nilfs->ns_gc_inodes_h + ihash(ino, cno);
	struct hlist_node *node;
	struct inode *inode;
	hlist_for_each_entry(inode, node, head, i_hash) {
		if (inode->i_ino == ino && NILFS_I(inode)->i_cno == cno)
			return inode;
	}
	inode = alloc_gcinode(nilfs, ino, cno);
	if (likely(inode)) {
		hlist_add_head(&inode->i_hash, head);
		list_add(&NILFS_I(inode)->i_dirty, &nilfs->ns_gc_inodes);
	}
	return inode;
}