DragonFly bugs List (threaded) for 2008-09
DragonFly BSD
DragonFly bugs List (threaded) for 2008-09
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: [issue1129] hammer-inodes: malloc limit exceeded


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 16 Sep 2008 15:56:50 -0700 (PDT)

:Definitely.
:
:Every time I got a crash, the machine was re-creating an hourly rsnapshot
:arborescence from the previous one. It should have been a mix of mkdir /
:chmod / chown ...
:
:-- 
:Francois Tigeot

    Ok, please try the patch below.  This is kinda a kitchen sink approach
    and will reduce performance somewhat when doing lots of
    hardlinks/chmods/etc but I want to see if it deals with the problem.

    Also reduce kern.maxvnodes to 100000.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

Index: hammer_vnops.c
===================================================================
RCS file: /cvs/src/sys/vfs/hammer/hammer_vnops.c,v
retrieving revision 1.96
diff -u -p -r1.96 hammer_vnops.c
--- hammer_vnops.c	9 Aug 2008 07:04:16 -0000	1.96
+++ hammer_vnops.c	16 Sep 2008 22:52:12 -0000
@@ -1038,6 +1038,7 @@ hammer_vop_nlink(struct vop_nlink_args *
 		cache_setvp(nch, ap->a_vp);
 	}
 	hammer_done_transaction(&trans);
+	hammer_inode_waitreclaims(dip->hmp);
 	return (error);
 }
 
@@ -1108,6 +1109,7 @@ hammer_vop_nmkdir(struct vop_nmkdir_args
 		}
 	}
 	hammer_done_transaction(&trans);
+	hammer_inode_waitreclaims(dip->hmp);
 	return (error);
 }
 
@@ -1873,6 +1875,8 @@ done:
 	if (error == 0)
 		hammer_modify_inode(ip, modflags);
 	hammer_done_transaction(&trans);
+	if (ap->a_vp->v_opencount == 0)
+		hammer_inode_waitreclaims(ip->hmp);
 	return (error);
 }
 



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]