Module Name:    src
Committed By:   manu
Date:           Sun Oct 23 05:01:00 UTC 2011

Modified Files:
        src/lib/libperfuse: perfuse.c

Log Message:
perfuse memory usage can grow quite large when using a lot of vnodes,
and the amount of data memory involved is not easy to forcast. We therefore
raise the limit to the maximum.

Patch from Manuel Bouyer. It helps completing a cvs update on a glusterfs
colume.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/lib/libperfuse/perfuse.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libperfuse/perfuse.c
diff -u src/lib/libperfuse/perfuse.c:1.21 src/lib/libperfuse/perfuse.c:1.22
--- src/lib/libperfuse/perfuse.c:1.21	Tue Oct 18 15:47:32 2011
+++ src/lib/libperfuse/perfuse.c	Sun Oct 23 05:01:00 2011
@@ -1,4 +1,4 @@
-/*  $NetBSD: perfuse.c,v 1.21 2011/10/18 15:47:32 manu Exp $ */
+/*  $NetBSD: perfuse.c,v 1.22 2011/10/23 05:01:00 manu Exp $ */
 
 /*-
  *  Copyright (c) 2010-2011 Emmanuel Dreyfus. All rights reserved.
@@ -34,6 +34,7 @@
 #include <puffs.h>
 #include <sys/types.h>
 #include <sys/mman.h>
+#include <sys/resource.h>
 #include <sys/socket.h>
 #include <sys/extattr.h>
 #include <sys/un.h>
@@ -399,6 +400,22 @@ perfuse_init(pc, pmi)
 	unsigned int puffs_flags;
 	struct puffs_node *pn_root;
 	struct puffs_pathobj *po_root;
+	struct rlimit rl;
+
+	/*
+	 * perfused can grow quite large, let assume there's enough ram ...
+	 */
+	if (getrlimit(RLIMIT_DATA, &rl) < 0) {
+		DERR(EX_OSERR, "%s: getrlimit failed: %s", __func__,
+		    strerror(errno));
+	} else {
+		rl.rlim_cur = rl.rlim_max;
+		if (setrlimit(RLIMIT_DATA, &rl) < 0) {
+			DERR(EX_OSERR, "%s: setrlimit failed: %s", __func__,
+			    strerror(errno));
+		}
+	}
+		
 
 	ps = init_state();
 	ps->ps_owner_uid = pmi->pmi_uid;

Reply via email to