kernel/ufs: Bring in a fix to ufsdirhash_hash() from FreeBSD.
authorSascha Wildner <saw@online.de>
Sun, 10 Jun 2012 02:31:33 +0000 (04:31 +0200)
committerSascha Wildner <saw@online.de>
Sun, 10 Jun 2012 02:35:14 +0000 (04:35 +0200)
"When looking for some extra data to include in the hash, use the
 address of the dirhash, rather than the first sizeof(struct dirhash *)
 bytes of the structure (which, thankfully, seem to be constant)."

While here, fix some typos in the comment.

In-discussion-with: thesjg, vsrinivas

sys/vfs/ufs/ufs_dirhash.c

index 8194c6f..3abdd8b 100644 (file)
@@ -791,13 +791,13 @@ ufsdirhash_hash(struct dirhash *dh, char *name, int namelen)
        uint32_t hash;
 
        /*
-        * We hash the name and then some ofther bit of data which is
-        * invarient over the dirhash's lifetime. Otherwise names
+        * We hash the name and then some other bit of data that is
+        * invariant over the dirhash's lifetime. Otherwise names
         * differing only in the last byte are placed close to one
         * another in the table, which is bad for linear probing.
         */
        hash = fnv_32_buf(name, namelen, FNV1_32_INIT);
-       hash = fnv_32_buf(dh, sizeof(dh), hash);
+       hash = fnv_32_buf(&dh, sizeof(dh), hash);
        return (hash % dh->dh_hlen);
 }