/* Release the dentry's inode, using the filesystem d_iput() operation if defined.  */
static void dentry_iput(struct dentry *dentry) __releases(dentry -> d_lock) __releases(dcache_lock)
/* Release the dentry's inode, using the filesystem d_iput() operation if defined.  */
static void dentry_iput(struct dentry *dentry) __releases(dentry -> d_lock) __releases(dcache_lock)
{
	struct inode *inode = dentry->d_inode;
	if (inode) {
		dentry->d_inode = NULL;
		list_del_init(&dentry->d_alias);
		spin_unlock(&dentry->d_lock);
		spin_unlock(&dcache_lock);
		if (!inode->i_nlink)
			fsnotify_inoderemove(inode);
		if (dentry->d_op && dentry->d_op->d_iput)
			dentry->d_op->d_iput(dentry, inode);
		else
			iput(inode);
	} else {
		spin_unlock(&dentry->d_lock);
		spin_unlock(&dcache_lock);
	}
}