/* get_new_inode_fast is the fast path version of get_new_inode, see the comment at iget_locked for details.  */
static struct inode* get_new_inode_fast(struct super_block *sb, struct hlist_head *head, unsigned long ino)
/* get_new_inode_fast is the fast path version of get_new_inode, see the comment at iget_locked for details.  */
static struct inode* get_new_inode_fast(struct super_block *sb, struct hlist_head *head, unsigned long ino)
{
	struct inode *inode;
	inode = alloc_inode(sb);
	if (inode) {
		struct inode *old;
		spin_lock(&inode_lock);
		old = find_inode_fast(sb, head, ino);
		if (!old) {
			inode->i_ino = ino;
			__inode_add_to_lists(sb, head, inode);
			inode->i_state = I_NEW;
			spin_unlock(&inode_lock);
			return inode;
		}
		__iget(old);
		spin_unlock(&inode_lock);
		destroy_inode(inode);
		inode = old;
		wait_on_inode(inode);
	}
	return inode;
}