}
#endif /* !HAVE_TRUNCATE_COMPLETE_PAGE */
-#if !defined(HAVE_D_REHASH_COND) && !defined(HAVE___D_REHASH)
-/* megahack */
-static inline void d_rehash_cond(struct dentry * entry, int lock)
-{
- if (!lock)
- spin_unlock(&dcache_lock);
-
- d_rehash(entry);
-
- if (!lock)
- spin_lock(&dcache_lock);
-}
-
-#define __d_rehash(dentry, lock) d_rehash_cond(dentry, lock)
-#endif /* !HAVE_D_REHASH_COND && !HAVE___D_REHASH*/
+#ifdef HAVE_DCACHE_LOCK
+# define dget_dlock(d) dget_locked(d)
+# define d_refcount(d) atomic_read(&(d)->d_count)
+#else
+# define d_refcount(d) ((d)->d_count)
+#endif /* HAVE_DCACHE_LOCK */
#ifdef ATTR_OPEN
# define ATTR_FROM_OPEN ATTR_OPEN