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