From owner-freebsd-fs@FreeBSD.ORG Sun May 1 17:39:13 2011 Return-Path: Delivered-To: fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 264F0106566B; Sun, 1 May 2011 17:39:13 +0000 (UTC) (envelope-from bfriesen@simple.dallas.tx.us) Received: from blade.simplesystems.org (blade.simplesystems.org [65.66.246.74]) by mx1.freebsd.org (Postfix) with ESMTP id D96A98FC17; Sun, 1 May 2011 17:39:12 +0000 (UTC) Received: from freddy.simplesystems.org (freddy.simplesystems.org [65.66.246.65]) by blade.simplesystems.org (8.14.4+Sun/8.14.4) with ESMTP id p41HQqSu024922; Sun, 1 May 2011 12:26:52 -0500 (CDT) Date: Sun, 1 May 2011 12:26:52 -0500 (CDT) From: Bob Friesenhahn X-X-Sender: bfriesen@freddy.simplesystems.org To: Rick Macklem In-Reply-To: <1211771823.830180.1304268292625.JavaMail.root@erie.cs.uoguelph.ca> Message-ID: References: <1211771823.830180.1304268292625.JavaMail.root@erie.cs.uoguelph.ca> User-Agent: Alpine 2.01 (GSO 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (blade.simplesystems.org [65.66.246.90]); Sun, 01 May 2011 12:26:52 -0500 (CDT) Cc: rmacklem@freebsd.org, fs@freebsd.org Subject: Re: newnfs client and statfs X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 May 2011 17:39:13 -0000 On Sun, 1 May 2011, Rick Macklem wrote: > > Or should I try and do the division to see if the large > value in sf_abytes will fit in INT64_MAX after the division? Something > like: > int64_t tmp; > > tmp = sfp->sf_abytes; > tmp /= NFS_FABLKSIZE; > if (tmp < 0) > sbp->f_bavail = INT64_MAX; > else > sbp->f_bavail = tmp; That one seems better because it preserves more of the value, but perhaps this is better because it does not depend on undocumented/undefined behavior (also untested): uint64_t tmp; tmp = sfp->sf_abytes / NFS_FABLKSIZE; if (tmp > (uint64_t) INT64_MAX) sbp->f_bavail = INT64_MAX; else sbp->f_bavail = tmp; Bob -- Bob Friesenhahn bfriesen@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/