git: HAMMER VFS - Fix an edge case in hammer_inode_waitreclaims()

From:

Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>

Date:

Tue, 16 Mar 2010 10:42:31 -0700 (PDT)

commit 858cc00ada5173ec94940260555b52e834027986
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date: Tue Mar 16 10:39:01 2010 -0700
HAMMER VFS - Fix an edge case in hammer_inode_waitreclaims()
* Detached inodes can build up in the flusher, causing iqueued/reclaiming
to increase. hammer_inode_waitreclaims() is designed to slow down
the processes responsible (typically a rm -rf) to prevent the backlog
from blowing out kernel memory.
* hammer_inode_waitreclaims() had a bug where a new pid entry was not
being placed in the hash table such that it would be properly found
by the chaining. Fix this case.
* This fixes an issue where a simultanious rm -rf and (typically) two or
more directory iterations via ls or find over hundreds of thousands or
millions of files could cause the number of detached inodes to increase
in an unbounded fashion.
Summary of changes:
sys/vfs/hammer/hammer_inode.c | 24 +++++++++++++++++++++++-
1 files changed, 23 insertions(+), 1 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/858cc00ada5173ec94940260555b52e834027986
--
DragonFly BSD source repository