From ee14891602b6c394977ec83600da011716f8d998 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Sat, 12 Jul 2008 23:47:13 +0000 Subject: [PATCH] HAMMER 61F/Many: Stabilization * Fix a bug triggered by rm -rf where HAMMER was failling to wait for reclaimed inodes to drain, allowing a build-up that would result in a kmalloc() pool-full panic. Add a required call to hammer_inode_waitreclaims() in the dounlink code. Because this code acquires and releases inodes without having to mess around with related vnodes, it bypassed the reclaim checks in the vnode path. Reported-by: Michael Neumann --- sys/vfs/hammer/hammer_vnops.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/vfs/hammer/hammer_vnops.c b/sys/vfs/hammer/hammer_vnops.c index 073627aef0..d6c5839645 100644 --- a/sys/vfs/hammer/hammer_vnops.c +++ b/sys/vfs/hammer/hammer_vnops.c @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/vfs/hammer/hammer_vnops.c,v 1.88 2008/07/12 23:04:50 dillon Exp $ + * $DragonFly: src/sys/vfs/hammer/hammer_vnops.c,v 1.89 2008/07/12 23:47:13 dillon Exp $ */ #include @@ -2683,6 +2683,7 @@ retry: } else { hammer_done_cursor(&cursor); } + hammer_inode_waitreclaims(ip->hmp); if (error == EDEADLK) goto retry; -- 2.11.4.GIT