[LU-5963] wrong hashing in LU-4647 Created: 28/Nov/14 Updated: 03/Dec/14 Resolved: 03/Dec/14 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.7.0 |
| Fix Version/s: | Lustre 2.7.0 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Alexey Lyashkov | Assignee: | Nathaniel Clark |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | HB, nodemap, patch | ||
| Environment: |
master from now. |
||
| Issue Links: |
|
||||||||||||
| Severity: | 3 | ||||||||||||
| Rank (Obsolete): | 16655 | ||||||||||||
| Description |
|
Sometimes recovery-small tests 50-52 failed on 8 CPU box. with leak a export reference. After some investigation i see nodemap don't able to found own entry for an export, but export still linked to node map. (i don't know why intel land something without any debug options in code?). per additional investigation i see someone commit 83f04354ff68a14d7492e35a9576c91492a1206c have a bad inspection and allow to "hash" an export pointer as string. |
| Comments |
| Comment by Alexey Lyashkov [ 28/Nov/14 ] |
|
this patch fixes problem @@ -50,7 +52,12 @@ void nm_member_putref(struct obd_export *exp) static __u32 nm_member_hashfn(cfs_hash_t *hash_body, const void *key, unsigned mask) { - return cfs_hash_djb2_hash(key, strlen(key), mask); + unsigned long hash; +// return cfs_hash_djb2_hash(key, strlen(key), mask); + hash = hash_long((unsigned long)key, hash_body->hs_bkt_bits) & mask; + + CDEBUG(D_INFO, "hashing %p -> %lu\n", key, hash); + return hash; } |
| Comment by Gerrit Updater [ 29/Nov/14 ] |
|
Alexey Lyashkov (alexey.lyashkov@seagate.com) uploaded a new patch: http://review.whamcloud.com/12881 |
| Comment by Alexey Lyashkov [ 29/Nov/14 ] |
| Comment by Gerrit Updater [ 03/Dec/14 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/12881/ |
| Comment by Nathaniel Clark [ 03/Dec/14 ] |
|
Merged to master |