translate INVARIANTS to DEBUG for code from OpenSolaris

Justin T. Gibbs gibbs at FreeBSD.org
Tue Jul 30 02:39:14 UTC 2013


On Jul 29, 2013, at 12:25 PM, Steven Hartland <killing at multiplay.co.uk> wrote:

> ----- Original Message ----- From: "Andriy Gapon" <avg at FreeBSD.org>
> 
>> [zfs-devel@, fs@, dtrace@ are Bcc-ed]
>> In OpenSolaris and its descendants DEBUG is used in a fashion similar to our
>> INVARIANTS.  For example, ASSERT macros are enabled by it.
>> In our kernel code DEBUG has a different meaning and enables far too verbose or
>> far too obscure code and, as such, it is very rarely enabled.
>> The idea of a change that I would like to propose is to translate INVARIANTS
>> kernel option into DEBUG for the files that originated from OpenSolaris (and
>> hopefully only for them).
>> The change:
>>   opensolaris code: translate INVARIANTS to DEBUG and ZFS_DEBUG
>>   do this by forcing inclusion of
>>   sys/cddl/compat/opensolaris/sys/debug_compat.h
>>   via -include option into all source files from OpenSolaris.
>>   Note that this -include option must always be after -include opt_global.h.
>>   Additionally, remove forced definition of DEBUG for some modules and fix
>>   their build without DEBUG.
>>   Also, meaning of DEBUG was overloaded to enable WITNESS support for some
>>   OpenSolaris (primarily ZFS) locks.  Now this overloading is removed and
>>   that use of DEBUG is replaced with a new option OPENSOLARIS_WITNESS.
>> http://people.freebsd.org/~avg/osol-invariants-debug.diff
>> I would like to ask for your feedback on the soundness of the whole idea.
>> Also on the name, location and style of inclusion for
>> sys/cddl/compat/opensolaris/sys/debug_compat.h.
>> And on any other details of the proposed change.
>> Testing is also welcome, of course.
>> Thank you very much.
> 
> I'm not sure you need #define ZFS_DEBUG as its already a dependency on
> DEBUG see:
> sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h
> 
> Should this connection be broken and INVARIANTS only trigger DEBUG by
> default? One potential reason for this distinction is that ZFS_DEBUG brings
> with it some potentially quite heavy weight validation such as dnode_verify.

I would prefer to have INVARIANTS enable all of the ZFS invariant code, not
just the asserts.  Folks already know that INVARIANTS means (sometimes
quite significantly) lower performance.  This is a small price to pay for catching
defects before a release.

--
Justin


More information about the freebsd-arch mailing list