From mboxrd@z Thu Jan 1 00:00:00 1970 From: wcheng@sourceware.org Date: 2 Aug 2006 01:28:59 -0000 Subject: [Cluster-devel] cluster/gfs-kernel/src/gfs super.c Message-ID: <20060802012859.31428.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Branch: RHEL4 Changes by: wcheng at sourceware.org 2006-08-02 01:28:57 Modified files: gfs-kernel/src/gfs: super.c Log message: Bugzilla 199984: Increasing gt_statfs_slots tunable could significantly boost gfs "df" performance; e.g. set it to 128 from current default (64) could cut the "df" wall time in half with larger filesystem size. However, the kmalloc call within stat_gfs_async() has the possibility to fail due to increased gt_statfs_slots. There is really no need for this array to be on a piece of contiguous memory. Switch to vmalloc(). Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/super.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.12.2.3&r2=1.12.2.4 --- cluster/gfs-kernel/src/gfs/super.c 2006/02/15 17:19:22 1.12.2.3 +++ cluster/gfs-kernel/src/gfs/super.c 2006/08/02 01:28:57 1.12.2.4 @@ -840,7 +840,7 @@ memset(sg, 0, sizeof(struct gfs_stat_gfs)); - gha = kmalloc(slots * sizeof(struct gfs_holder), GFP_KERNEL); + gha = vmalloc(slots * sizeof(struct gfs_holder)); if (!gha) return -ENOMEM; memset(gha, 0, slots * sizeof(struct gfs_holder)); @@ -884,7 +884,7 @@ yield(); } - kfree(gha); + vfree(gha); return error; }