Whamcloud - gitweb
b=17511
authoryury <yury>
Fri, 7 Nov 2008 22:37:57 +0000 (22:37 +0000)
committeryury <yury>
Fri, 7 Nov 2008 22:37:57 +0000 (22:37 +0000)
commitc83c2bee2dfa881007fa697ed912dd64574a0c3e
treebf24f5e37446ddd3e23c04ba8aa26edc613f0466
parenta590697063c0ef8a2cf9bd7f5e51cb757e166363
b=17511
r=johann,adilger

  - removes deadlock possibility by disabling rehash in hash_del() operations and moving hash_add()
    out of spin_locks when calling. Hash table has own mechanisms for protecting its structures and it
    also has hash_add_unique() method for using in concurrent run contexts;

    - fixed missed lh_put() in hash_add_unique() which led to extra refs in some cases (extra ref to
    export) and inability to cleanup;

    - fixed __lustre_hash_set_theta() which set @max theta into ->lh_min_theta;

    - in lustre_hash_rehash_size() disable rehash also for the case when new and old hash sizes equal
    in corner cases (max_size or min_size). Before this fix it could be possible to do needless
    rehashes when size is actually did not change but we do this expensive operation;

    - disable rehash in hash_add_unique() if no actual add happened since entry with the same key is
    already found in the table;

    - some cleanups in hash table code;
lustre/include/class_hash.h
lustre/ldlm/ldlm_flock.c
lustre/ldlm/ldlm_lib.c
lustre/lov/lov_pool.c
lustre/mdt/mdt_handler.c
lustre/obdclass/class_hash.c