Gleb Smirnoff 687adb703d Refactor the name hash and the ID hash, that are used to address nodes:
- Make hash sizes growable, to satisfy users running large mpd
  installations, having thousands of nodes.
- NG_NAMEHASH() proved to give a very bad distribution in real life
  name sets, while generic hash32_str(name, HASHINIT) proved to give
  an even one, so you the latter for name hash.
- Do not store unnamed nodes in slot 0 of name hash, no reason for that.
- Use the ID hash in cases when we need to run through all nodes: the
  NGM_LISTNODES command and in the vnet_netgraph_uninit().
- Implement NGM_LISTNODES and NGM_LISTNAMES as separate code, the former
  iterates through the ID hash, and the latter through the name hash.
- Keep count of all nodes and of named nodes, so that we don't need
  to count nodes in NGM_LISTNODES and NGM_LISTNAMES. The counters are
  also used to estimate whether we need to grow hashes.
- Close a race between two threads running ng_name_node() assigning same
  name to different nodes.
2012-02-16 19:10:01 +00:00
..
2011-07-06 09:43:25 +00:00
2012-02-12 05:14:12 +00:00
2012-02-12 05:14:12 +00:00
2012-02-10 12:35:57 +00:00
2011-07-25 09:12:48 +00:00
2012-01-16 12:33:55 +00:00
2012-01-02 12:12:10 +00:00
2010-06-10 16:45:30 +00:00
2010-04-07 16:29:10 +00:00
2010-04-01 10:41:01 +00:00
2009-10-24 18:49:17 +00:00