From owner-freebsd-hackers@FreeBSD.ORG Thu Mar 3 21:57:28 2011 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 42761106566C for ; Thu, 3 Mar 2011 21:57:28 +0000 (UTC) (envelope-from mdf356@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id CA4898FC0C for ; Thu, 3 Mar 2011 21:57:27 +0000 (UTC) Received: by wyb32 with SMTP id 32so1780807wyb.13 for ; Thu, 03 Mar 2011 13:57:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=j6OOp6DNH6sFMdolfvxm3giP11cDSC2vE3Y8EsE99jA=; b=LL9s0Ha8bbG9oAHD96YRMSvaFc0iOG8f4GRokeowqlZWSgbn9QobHSY/nthg7STOTI pwyyECuY2kln6fgfqdHgfZOunhjciDySW8uLWh4nbEsltO0OwCwpEXU7imGeCAwnraRe K4Ls7mgtciuNtrIz8cJjXsc+1/Nif0zf7IBJE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=qpJCUR2dP0LBhuCdddzoIXPhl0ETgUvNbXTCOjmhi3p443m2GQbr4BpdUGKO9jZctP EhUOoNaGwqXiji9MjK4t/G0UOGf26iCLEqYC/XlObFL/pcerLZzuSwpunb3UI4gaZ9E9 zjL8p9uncTeMDVY9iAbUA8jiIXBub4IdAyF3Y= MIME-Version: 1.0 Received: by 10.216.156.6 with SMTP id l6mr1068763wek.55.1299188085513; Thu, 03 Mar 2011 13:34:45 -0800 (PST) Received: by 10.216.72.147 with HTTP; Thu, 3 Mar 2011 13:34:45 -0800 (PST) In-Reply-To: References: <20110303174948.GF1471@albert.catwhisker.org> Date: Thu, 3 Mar 2011 13:34:45 -0800 Message-ID: From: Matthew Fleming To: Brandon Gooch Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: hackers@freebsd.org, David Wolfskill Subject: Re: Puzzled about VFS sysctl OIDs -- signed vs. unsigned X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Mar 2011 21:57:28 -0000 On Thu, Mar 3, 2011 at 1:03 PM, Brandon Gooch wrote: > On Thu, Mar 3, 2011 at 11:49 AM, David Wolfskill w= rote: >> I'm using a little shell script to capture selected sysctl OID >> values periodically, in an attempt to get a better idea how the >> resources of a system are being used during a long-running (usually >> measured in hours), mission-critical workload. >> >> In the process of testing this, I've seen some of the VFS sysctl >> OIDs (in particular) report negative values ... when the description >> looks to me as if the OID in question is intended to be a monotonically >> increasing counter. >> >> For example: >> >>> sysctl -d vfs.getnewbufcalls >> vfs.getnewbufcalls: Number of calls to getnewbuf >>> sysctl vfs.getnewbufcalls >> vfs.getnewbufcalls: -348909432 >> >> Examining sys/kern/vfs_bio.c, the definition of vfs.getnewbufcalls >> appears to be: >> >> ... >> static int getnewbufcalls; >> SYSCTL_INT(_vfs, OID_AUTO, getnewbufcalls, CTLFLAG_RW, &getnewbufcalls, = 0, >> =A0 "Number of calls to getnewbuf"); >> ... >> >> Many of the other OIDs defined nearby are also SYSCTL_INT (or >> SYSCTL_LONG), vs. SYSCTL_UINT (or SYSCTL_ULONG), and the corresponding >> variables are defined as static int (or static long) vs. static u_int >> (or static u_long). >> >> Is this both correct and reasonable? =A0If so, how should I interpret su= ch >> negative values? >> >> [GSoC project, anyone?] >> >> Thanks! >> >> Peace, >> david > > The following initiative may factor heavily into any decision to > change sysctl declarations at this point: > > http://www.freebsd.org/news/status/report-2010-10-2010-12.html#SYSCTL-Typ= e-Safety The intent of the type-safety is to make sure that the types assumed for the kernel's sysctl handler match the type of the variable. This project won't fix issues where a signed type is being used and the value wraps (at least, I presume that's what happened in this case?) Thanks, matthew