Date: Tue, 5 Feb 2002 00:28:43 +1100 (EST) From: Bruce Evans <bde@zeta.org.au> To: John Polstra <jdp@polstra.com> Cc: <current@FreeBSD.ORG>, <markm@FreeBSD.ORG> Subject: Re: Panics in ffs_clusteracct with todays -current Message-ID: <20020205000829.A22758-100000@gamplex.bde.org> In-Reply-To: <XFMail.20020203205249.jdp@polstra.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 3 Feb 2002, John Polstra wrote: > The kernel from today's current (CVSupped 3 Feb 2002 around 17:40 > PST) can't stay up for more than a few minutes without getting a > page-not-present panic at line 1815 of ufs/ffs/ffs_alloc.c revision > 1.86. It is in this code: > > /* > * Find the size of the cluster going backward. > */ > start = blkno - 1; > end = start - fs->fs_contigsumsize; > if (end < 0) > end = -1; > mapp = &freemapp[start / NBBY]; > map = *mapp--; > ^^^^^ > BANG! This was broken by a recent change to the type of NBBY. `start' is apparently negative (it would be for blkno == 0). Small negative values of `start' used to give an index of 0 in freemapp (not even small negative, since integer division bogusly rounds negative values towards 0). They now give an index of about 0x1fffffff on 32-bit machines. I also got panics in vm. The vm code apparently trapped while trying to map the preposterous address generated by the above. This patch just backs out the change to NBBY. %%% Index: types.h =================================================================== RCS file: /home/ncvs/src/sys/sys/types.h,v retrieving revision 1.50 diff -u -2 -r1.50 types.h --- types.h 3 Feb 2002 11:36:59 -0000 1.50 +++ types.h 4 Feb 2002 13:08:05 -0000 @@ -172,5 +172,5 @@ #ifndef _POSIX_SOURCE -#define NBBY 8U /* number of bits in a byte */ +#define NBBY 8 /* number of bits in a byte */ /* %%% Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020205000829.A22758-100000>