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;