summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authoriedowse <iedowse@FreeBSD.org>2001-09-09 23:48:28 +0000
committeriedowse <iedowse@FreeBSD.org>2001-09-09 23:48:28 +0000
commitddaced1703546f87091111490e8f2546d9459465 (patch)
tree281c33ce8a0a8f87034b76d4c64b7ce42065e8af /sys/ufs
parentcfad1534f835ef2efb2b12d5e34034b85456e19a (diff)
downloadFreeBSD-src-ddaced1703546f87091111490e8f2546d9459465.zip
FreeBSD-src-ddaced1703546f87091111490e8f2546d9459465.tar.gz
The "dirpref" directory layout preference improvements make use of
an array "fs_contigdirs[]" to avoid too many directories getting created in each cylinder group. The memory required for this and two other arrays (fs_csp[] and fs_maxcluster[]) is allocated with a single malloc() call, and divided up afterwards. However, the 'space' pointer is not advanced correctly, so fs_contigdirs and fs_maxcluster end up pointing to the same address. Add the missing code to advance the 'space' pointer, and remove an unnecessary update of the pointer that follows. This is likely to fix the "ffs_clusteralloc: map mismatch" panics that have been reported recently. Submitted by: Luke Mewburn <lukem@wasabisystems.com>
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index c9607e5..f741036 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -684,10 +684,10 @@ ffs_mountfs(devvp, mp, p, malloctype)
fs->fs_maxcluster = lp = space;
for (i = 0; i < fs->fs_ncg; i++)
*lp++ = fs->fs_contigsumsize;
+ space = lp;
}
size = fs->fs_ncg * sizeof(u_int8_t);
fs->fs_contigdirs = (u_int8_t *)space;
- space = (u_int8_t *)space + size;
bzero(fs->fs_contigdirs, size);
/* Compatibility for old filesystems XXX */
if (fs->fs_avgfilesize <= 0) /* XXX */
OpenPOWER on IntegriCloud