Lines Matching refs:hash

83  * The hash queues for the access to active and cached rnodes
85 * for each hash bucket is used to control access and to synchronize
86 * lookups, additions, and deletions from the hash queue.
93 * a hash queue and the exclusive lock to the hash queue be held.
94 * If an rnode is not hashed into a hash queue, then it is destroyed
96 * about the file. The exclusive lock to the hash queue must be
97 * held in order to prevent a lookup in the hash queue from finding
99 * freelist. The lookup in the hash queue will have the hash queue
107 * rnode is looked up in the hash queues, then either the rnode
112 * The hash queue lock might be held shared and it is possible that
119 * to the hash queue and the thread doing the lookup in the hash
120 * queue is holding either a shared or exclusive lock to the hash
125 * hash bucket lock -> vnode lock
126 * hash bucket lock -> freelist lock
158 static long nacache; /* used strictly to size the number of hash queues */
2270 * into the hash queues. If the rnode for this fhandle
2273 * Note: make_rnode() may upgrade the hash bucket lock to exclusive.
2332 * into the hash queues. If the rnode for this fhandle
2335 * Note: make_rnode() may upgrade the hash bucket lock to exclusive.
2422 * This is a hash function in which seemingly obvious and harmless
2426 * rtablehash() implements Jenkins' one-at-a-time hash algorithm. The
2429 * http://burtleburtle.net/bob/hash/doobs.html
2434 * the hash algorithm still provides even distribution in all cases and with
2440 ulong_t hash, len, i;
2445 for (hash = 0, i = 0; i < len; i++) {
2446 hash += key[i];
2447 hash += (hash << 10);
2448 hash ^= (hash >> 6);
2450 hash += (hash << 3);
2451 hash ^= (hash >> 11);
2452 hash += (hash << 15);
2453 return (hash & rtablemask);
2688 * accessible by it does not reside in the hash queues,
2716 * rnode is not in the rnode hash queues, so the
2744 * Lock the hash queue and then recheck the reference count
2816 * Put a rnode in the hash table.
2818 * The caller must be holding the exclusive hash queue lock.
2838 * Remove a rnode from the hash table.
2840 * The caller must be holding the hash queue lock.
2858 * Remove a rnode from the hash table.
2860 * The caller must not be holding the hash queue lock.
2874 * The caller must be holding the hash queue lock, either shared or exclusive.
2953 * Destroy inactive vnodes from the hash queues which belong to this
2973 /* save the hash pointer before destroying */
3068 * Walk the hash queues looking for rnodes with page
3200 * holding the hash bucket locked.
3271 * rnode. Remove each of these entries from the hash
3451 * Allocate and initialize the rnode hash queues
3539 * Deallocate the rnode hash queues
4575 * hash queues for the rnode.