/*
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
{
const struct ldlm_res_id *id = key;
struct lu_fid fid;
- __u64 hash;
+ __u32 hash;
+ __u32 val;
fid.f_seq = id->name[LUSTRE_RES_ID_SEQ_OFF];
- fid.f_oid = (__u32)id->name[LUSTRE_RES_ID_OID_OFF];
- fid.f_ver = (__u32)id->name[LUSTRE_RES_ID_VER_OFF];
-
- hash = fid_flatten(&fid);
+ fid.f_oid = (__u32)id->name[LUSTRE_RES_ID_VER_OID_OFF];
+ fid.f_ver = (__u32)(id->name[LUSTRE_RES_ID_VER_OID_OFF] >> 32);
+
+ hash = fid_flatten32(&fid);
+ hash += (hash >> 4) + (hash << 12); /* mixing oid and seq */
+ if (id->name[LUSTRE_RES_ID_HSH_OFF] != 0) {
+ val = id->name[LUSTRE_RES_ID_HSH_OFF];
+ hash += (val >> 5) + (val << 11);
+ } else {
+ val = fid_oid(&fid);
+ }
hash = cfs_hash_long(hash, hs->hs_bkt_bits);
- /* ignore a few low bits */
- if (id->name[LUSTRE_RES_ID_HSH_OFF] != 0)
- hash += id->name[LUSTRE_RES_ID_HSH_OFF] >> 5;
- else
- hash = hash >> 5;
+ /* give me another random factor */
+ hash -= cfs_hash_long((unsigned long)hs, val % 11 + 3);
+
hash <<= hs->hs_cur_bits - hs->hs_bkt_bits;
hash |= ldlm_res_hop_hash(hs, key, CFS_HASH_NBKT(hs) - 1);
{
.nsd_type = LDLM_NS_TYPE_MDC,
.nsd_bkt_bits = 11,
- .nsd_all_bits = 15,
+ .nsd_all_bits = 16,
.nsd_hops = &ldlm_ns_fid_hash_ops,
},
{
ns->ns_contention_time = NS_DEFAULT_CONTENTION_SECONDS;
ns->ns_contended_locks = NS_DEFAULT_CONTENDED_LOCKS;
+ ns->ns_max_parallel_ast = LDLM_DEFAULT_PARALLEL_AST_LIMIT;
ns->ns_nr_unused = 0;
ns->ns_max_unused = LDLM_DEFAULT_LRU_SIZE;
ns->ns_max_age = LDLM_DEFAULT_MAX_ALIVE;
{
check_res_locked(res);
- ldlm_resource_dump(D_INFO, res);
CDEBUG(D_OTHER, "About to add this lock:\n");
ldlm_lock_dump(D_OTHER, lock, 0);