[issue1129] hammer-inodes: malloc limit exceeded

Matthew Dillon dillon at apollo.backplane.com
Tue Sep 16 15:58:19 PDT 2008


: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 at 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);
 }
 





More information about the Bugs mailing list