/* if it cannot handle the case of removing a directory that is still in use by something else..  */
void dentry_unhash(struct dentry *dentry)
/* if it cannot handle the case of removing a directory that is still in use by something else..  */
void dentry_unhash(struct dentry *dentry)
{
	dget(dentry);
	shrink_dcache_parent(dentry);
	spin_lock(&dcache_lock);
	spin_lock(&dentry->d_lock);
	if (atomic_read(&dentry->d_count) == 2)
		__d_drop(dentry);
	spin_unlock(&dentry->d_lock);
	spin_unlock(&dcache_lock);
}