The following reply was made to PR bin/43587; it has been noted by GNATS.
From: Robert Elz <kre%munnari.OZ.AU@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: bin/43587: stupid error message during boot from sysctl if no COMPAT40 in kernel
Date: Fri, 09 Jul 2010 18:49:41 +0700
Date: Fri, 9 Jul 2010 10:20:01 +0000 (UTC)
From: Wolfgang.Stukenbrock%nagler-company.com@localhost
Message-ID: <20100709102001.394E863BAB7%www.NetBSD.org@localhost>
Your #1 looks like a reasonable thing to do to me (sysctl nodes shouldn't
exist unless the thing they control exists as well).
| 2. keep sysctl from setting a variable to the same value with "?="
| it has before.
In addition, I'd also fix sysctl, but not as you suggest there.
Rather, just stop it issuing an error message when it attempts to
set a variable (using ?=) and finds that the variable exists but
cannot be set (for any reason, read-only being the most obvious).
That I think is totally in keeping with the intent of the ?= operator,
and allows the problem you observed to be "fixed" without needing to
worry about testing whether the value being assigned is the same as the
value there already (just doing the read to test that might cause side
effects in some weird case) now worrying whether the write might be a trigger
in addition to setting the value.
kre