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;