kernel - Fix namecache memory exhaustion edge case
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 23 Nov 2010 07:24:25 +0000 (23:24 -0800)
committerVenkatesh Srinivas <me@endeavour.zapto.org>
Tue, 25 Jan 2011 14:46:43 +0000 (06:46 -0800)
commit008a60704be743a1ab739a25a333c1c401309c11
tree7116872a205a7d59eba07c4a855090dde2f72a13
parent3bc68d050d4d3ff01b1f354b58c76b418da68200
kernel - Fix namecache memory exhaustion edge case

* The namecache has traditionally relied on vnode limits to avoid
  blowing up its memory pool.  However, creating millions of hardlinks
  to the same vnode easily circumvents this assumption.

* Enhance the negative cache hysteresis code with a section for the
  positive cache that does the same thing, preventing the namecache
  from growing greater than 2x maxvnodes.

  This situation will not occur under normal operation, it is strictly
  for correctness.  The kernel should never panic on normal filesystem
  operations even if those operations are unrealistic.

* Tested w/HAMMER and a few million hardlinks to a single file.

Reported-by: Venkatesh Srinivas <me@acm.jhu.edu>
sys/kern/vfs_cache.c