NetBSD Problem Report #314

From gnats  Fri Jul  1 15:45:23 1994
Received: from amalfi.trl.OZ.AU (amalfi.trl.OZ.AU [137.147.99.99]) by sun-lamp.cs.berkeley.edu (8.6.9/8.6.9) with ESMTP id PAA06561 for <gnats-bugs@sun-lamp.cs.berkeley.edu>; Fri, 1 Jul 1994 15:45:20 -0700
Message-Id: <199407012245.IAA00385@dodo.melb.cpr.itg.telecom.com.au>
Date: Sat, 2 Jul 1994 08:45:14 +1000
From: Simon Burge <simonb@melb.cpr.itg.telecom.com.au>
Reply-To: simonb@melb.cpr.itg.telecom.com.au
To: gnats-bugs@sun-lamp.cs.berkeley.edu
Subject: df overflows on filesystems greater than 4 Gig
X-Send-Pr-Version: 3.2

>Number:         314
>Category:       bin
>Synopsis:       df overflows on filesystems greater than 4 Gig
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    gnats-admin
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 01 15:50:03 +0000 1994
>Closed-Date:    Fri Sep 16 21:00:48 +0000 1994
>Last-Modified:  
>Originator:     Simon Burge
>Release:        0.9B
>Organization:
"	Telecom Australia"
>Environment:
System: NetBSD dodo.melb.cpr.itg.telecom.com.au 0.9B NetBSD 0.9B (THOREAU) #0: Wed Jun 1 16:24:20 EST 1994 root@karybdis:/Src/src/sys/arch/i386/compile/THOREAU i386


>Description:
	The output of any block value (total blocks, used, avail) overflows
	at 4 Gigabytes.
>How-To-Repeat:
	Mount a filesystem (I used an NFS filesystem) greater than 4
	Gigabytes and type "df".
>Fix:
	This patch for /usr/src/bin/df.c is for 0.9B, but the incorrect code
	still exists in -current.  This patch is based on the 4.4 Lite df.

*** df.c.orig	1994/07/01 22:43:23
--- df.c	1994/07/01 22:43:31
***************
*** 178,183 ****
--- 178,191 ----
  }

  /*
+  * Convert statfs returned filesystem size into BLOCKSIZE units.
+  * Attempts to avoid overflow for large filesystems.
+  */
+ #define fsbtoblk(num, fsbs, bs) \
+ 	(((fsbs) != 0 && (fsbs) < (bs)) ? \
+ 		(num) / ((bs) / (fsbs)) : (num) * ((fsbs) / (bs)))
+ 
+ /*
   * Print out status about a filesystem.
   */
  void
***************
*** 207,215 ****
  	used = sfsp->f_blocks - sfsp->f_bfree;
  	availblks = sfsp->f_bavail + used;
  	(void)printf(" %*ld %7ld %7ld", headerlen,
! 	    sfsp->f_blocks * sfsp->f_bsize / blocksize,
! 	    used * sfsp->f_bsize / blocksize,
! 	    sfsp->f_bavail * sfsp->f_bsize / blocksize);
  	(void)printf(" %5.0f%%",
  	    availblks == 0 ? 100.0 : (double)used / (double)availblks * 100.0);
  	if (iflag) {
--- 215,223 ----
  	used = sfsp->f_blocks - sfsp->f_bfree;
  	availblks = sfsp->f_bavail + used;
  	(void)printf(" %*ld %7ld %7ld", headerlen,
! 	    fsbtoblk(sfsp->f_blocks, sfsp->f_bsize, blocksize),
! 	    fsbtoblk(used, sfsp->f_bsize, blocksize),
! 	    fsbtoblk(sfsp->f_bavail, sfsp->f_bsize, blocksize));
  	(void)printf(" %5.0f%%",
  	    availblks == 0 ? 100.0 : (double)used / (double)availblks * 100.0);
  	if (iflag) {
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: mycroft 
State-Changed-When: Fri Sep 16 14:00:48 PDT 1994 
State-Changed-Why:  
Fixed. 
>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.