-// if root directory is empty - we set default - Yura's - hash and
-// warn about it
+// if root directory is empty and no hash hint were supplied - we set
+// default - r5 hash - (Rupasov's Hash Number 5) and warn about it.
// FIXME: we look for only one name in a directory. If tea and yura
-// bith have the same value - we ask user to send report to the
+// both have the same value - we ask user to send report to the
// mailing list
__u32 find_hash_out (struct super_block * s)
{
@@ -822,12 +822,19 @@
de.de_entry_num --;
set_de_name_and_namelen (&de);
if (deh_offset( &(de.de_deh[de.de_entry_num]) ) == DOT_DOT_OFFSET) {
- /* allow override in this case */
- if (reiserfs_rupasov_hash(s)) {
- hash = YURA_HASH ;
+ if ( reiserfs_hash_detect(s) ) { // Hash hint was supplied
+ if (reiserfs_rupasov_hash(s)) {
+ hash = YURA_HASH ;
+ } else if (reiserfs_tea_hash(s)) {
+ hash = TEA_HASH ;
+ } else if (reiserfs_r5_hash(s)) {
+ hash = R5_HASH ;
+ }
+ }
+ if (!(s->u.reiserfs_sb.s_mount_opt & (1<<FORCE_RUPASOV_HASH|1<<FORCE_TEA_HASH|1<<FORCE_R5_HASH)) ) { // we need this for hash=detect case
+ reiserfs_warning("reiserfs: FS seems to be empty, autodetect "
+ "is using the default %s hash\n", reiserfs_hashname(hash));
}
- reiserfs_warning("reiserfs: FS seems to be empty, autodetect "
- "is using the default hash\n");
break;
}
r5hash=GET_HASH_VALUE (r5_hash (de.de_name, de.de_namelen));