|
@@ -93,6 +93,7 @@
|
|
|
#include <linux/bio.h>
|
|
|
#endif
|
|
|
#include <linux/log2.h>
|
|
|
+#include <linux/hash.h>
|
|
|
|
|
|
static struct kmem_cache *revoke_record_cache;
|
|
|
static struct kmem_cache *revoke_table_cache;
|
|
@@ -129,15 +130,11 @@ static void flush_descriptor(journal_t *, struct journal_head *, int, int);
|
|
|
|
|
|
/* Utility functions to maintain the revoke table */
|
|
|
|
|
|
-/* Borrowed from buffer.c: this is a tried and tested block hash function */
|
|
|
static inline int hash(journal_t *journal, unsigned int block)
|
|
|
{
|
|
|
struct jbd_revoke_table_s *table = journal->j_revoke;
|
|
|
- int hash_shift = table->hash_shift;
|
|
|
|
|
|
- return ((block << (hash_shift - 6)) ^
|
|
|
- (block >> 13) ^
|
|
|
- (block << (hash_shift - 12))) & (table->hash_size - 1);
|
|
|
+ return hash_32(block, table->hash_shift);
|
|
|
}
|
|
|
|
|
|
static int insert_revoke_hash(journal_t *journal, unsigned int blocknr,
|