Whamcloud - gitweb
LU-3974 llite: fix mkdir endless loop
[fs/lustre-release.git] / lustre / include / lustre_lite.h
index 4a88dd4..7729bdb 100644 (file)
@@ -146,10 +146,14 @@ static inline void ll_dir_chain_fini(struct ll_dir_chain *chain)
 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 */