static inline unsigned long hash_x_index(__u64 hash, int hash64)
{
#ifdef __KERNEL__
- if (BITS_PER_LONG == 32 && hash64)
- hash >>= 32;
+ if (BITS_PER_LONG == 32 && hash64)
+ hash >>= 32;
#endif
- return ~0UL - hash;
+ /* save hash 0 as index 0 because otherwise we'll save it at
+ * page index end (~0UL) and it causes truncate_inode_pages_range()
+ * to loop forever.
+ */
+ return ~0UL - (hash + !hash);
}
/** @} lite */