Subject: Re: Panics in #define DIAGNOSTIC code ?
To: Heiko W.Rupp <hwr@pilhuhn.de>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: tech-kern
Date: 05/01/1999 12:05:40
On Sat, 1 May 1999 13:24:05 +0200 
 "Heiko W.Rupp" <hwr@pilhuhn.de> wrote:

 > Hi,
 > 
 > looking at kern/7321, I saw that the panic mentioned 
 > is produced as result of 

Actually, it's the result of some other gode doing the wrong thing, and that
close needs to eb fixed.

 > #ifdef DIAGNOSTIC
 >                         if (ISSET(bp->b_flags, B_DONE|B_DELWRI) &&
 >                             bp->b_bcount < size)
 >                                 panic("getblk: block size invariant failed");
 > #endif
 > (kern/vfs_bio.c)
 > 
 > While it is a good idea, to have some invariant checking now and then,
 > I don't see the point to panic the system here.
 > 
 > Either 
 > 
 > - the checked invariant is not important, so a printf() is enough
 > 
 > or 
 > 
 > - the check is important as it could lead to inconsistent data
 > otherwise, then it shoudl always be executed and not only when
 > DIAGNOSTIC is defined.

I believe it's the latter... but DIAGNOSTIC is specifically for these
types of cheap sanity checks... i.e. the #ifdef is appropriate.

        -- Jason R. Thorpe <thorpej@nas.nasa.gov>