Skip site navigation (1)Skip section navigation (2)
Date:      24 Apr 2002 16:22:32 -0000
From:      Steve Shorter <steve@nomad.tor.lets.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/37424: nfsstat reports negative values
Message-ID:  <20020424162232.6039.qmail@nomad.lets.net>

next in thread | raw e-mail | index | archive | help

>Number:         37424
>Category:       bin
>Synopsis:       nfsstat reports negative values
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 24 09:30:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Steve Shorter
>Release:        FreeBSD 4.5-RELEASE i386
>Organization:
>Environment:
System: FreeBSD nomad.lets.net 4.5-RELEASE FreeBSD 4.5-RELEASE #0: Sat Feb 2 16:21:05 EST 2002 root@nomad.lets.net:/usr/src/sys/compile/NOMAD i386


	
>Description:
	nfsstat reports negative values for statistics

	For example

nfsstat -s

Server Info:
[snip]
Server Cache Stats:
   Inprog      Idem  Non-idem    Misses
     1466     25270     10665 -411587171
[snip]

nfsstat -c

Client Info:
[snip]
Cache Info:
Attr Hits    Misses Lkup Hits    Misses BioR Hits    Misses BioW Hits    Misses
-1428315246  97569746 1922194966  49909149 443563708  54646266     33354  26817023
BioRLHits    Misses BioD Hits    Misses DirE Hits    Misses
  3969094    105837    977158    383847    662768      2735

>How-To-Repeat:
	run NFS client or server for sufficient time until data in
struct nfsstats is not correctly printed by printf with format %9d et. al.
	
>Fix:

	Change printf formats to 'u' (unsigned) since these values
can never be negative.

	

*** nfsstat.c.orig	Wed Apr 24 12:00:32 2002
--- nfsstat.c	Wed Apr 24 11:58:58 2002
***************
*** 208,212 ****
  			"Getattr", "Setattr", "Lookup", "Readlink", "Read",
  			"Write", "Create", "Remove");
! 		printf("%9d %9d %9d %9d %9d %9d %9d %9d\n",
  			nfsstats.rpccnt[NFSPROC_GETATTR],
  			nfsstats.rpccnt[NFSPROC_SETATTR],
--- 208,212 ----
  			"Getattr", "Setattr", "Lookup", "Readlink", "Read",
  			"Write", "Create", "Remove");
! 		printf("%9u %9u %9u %9u %9u %9u %9u %9u\n",
  			nfsstats.rpccnt[NFSPROC_GETATTR],
  			nfsstats.rpccnt[NFSPROC_SETATTR],
***************
*** 220,224 ****
  			"Rename", "Link", "Symlink", "Mkdir", "Rmdir",
  			"Readdir", "RdirPlus", "Access");
! 		printf("%9d %9d %9d %9d %9d %9d %9d %9d\n",
  			nfsstats.rpccnt[NFSPROC_RENAME],
  			nfsstats.rpccnt[NFSPROC_LINK],
--- 220,224 ----
  			"Rename", "Link", "Symlink", "Mkdir", "Rmdir",
  			"Readdir", "RdirPlus", "Access");
! 		printf("%9u %9u %9u %9u %9u %9u %9u %9u\n",
  			nfsstats.rpccnt[NFSPROC_RENAME],
  			nfsstats.rpccnt[NFSPROC_LINK],
***************
*** 232,236 ****
  			"Mknod", "Fsstat", "Fsinfo", "PathConf", "Commit",
  			"GLease", "Vacate", "Evict");
! 		printf("%9d %9d %9d %9d %9d %9d %9d %9d\n",
  			nfsstats.rpccnt[NFSPROC_MKNOD],
  			nfsstats.rpccnt[NFSPROC_FSSTAT],
--- 232,236 ----
  			"Mknod", "Fsstat", "Fsinfo", "PathConf", "Commit",
  			"GLease", "Vacate", "Evict");
! 		printf("%9u %9u %9u %9u %9u %9u %9u %9u\n",
  			nfsstats.rpccnt[NFSPROC_MKNOD],
  			nfsstats.rpccnt[NFSPROC_FSSTAT],
***************
*** 245,249 ****
  			"TimedOut", "Invalid", "X Replies", "Retries", 
  			"Requests");
! 		printf("%9d %9d %9d %9d %9d\n",
  			nfsstats.rpctimeouts,
  			nfsstats.rpcinvalid,
--- 245,249 ----
  			"TimedOut", "Invalid", "X Replies", "Retries", 
  			"Requests");
! 		printf("%9u %9u %9u %9u %9u\n",
  			nfsstats.rpctimeouts,
  			nfsstats.rpcinvalid,
***************
*** 256,263 ****
  		printf(" %9.9s %9.9s %9.9s %9.9s\n",
  			"BioR Hits", "Misses", "BioW Hits", "Misses");
! 		printf("%9d %9d %9d %9d",
  			nfsstats.attrcache_hits, nfsstats.attrcache_misses,
  			nfsstats.lookupcache_hits, nfsstats.lookupcache_misses);
! 		printf(" %9d %9d %9d %9d\n",
  			nfsstats.biocache_reads-nfsstats.read_bios,
  			nfsstats.read_bios,
--- 256,263 ----
  		printf(" %9.9s %9.9s %9.9s %9.9s\n",
  			"BioR Hits", "Misses", "BioW Hits", "Misses");
! 		printf("%9u %9u %9u %9u",
  			nfsstats.attrcache_hits, nfsstats.attrcache_misses,
  			nfsstats.lookupcache_hits, nfsstats.lookupcache_misses);
! 		printf(" %9u %9u %9u %9u\n",
  			nfsstats.biocache_reads-nfsstats.read_bios,
  			nfsstats.read_bios,
***************
*** 267,276 ****
  			"BioRLHits", "Misses", "BioD Hits", "Misses");
  		printf(" %9.9s %9.9s\n", "DirE Hits", "Misses");
! 		printf("%9d %9d %9d %9d",
  			nfsstats.biocache_readlinks-nfsstats.readlink_bios,
  			nfsstats.readlink_bios,
  			nfsstats.biocache_readdirs-nfsstats.readdir_bios,
  			nfsstats.readdir_bios);
! 		printf(" %9d %9d\n",
  			nfsstats.direofcache_hits, nfsstats.direofcache_misses);
  	}
--- 267,276 ----
  			"BioRLHits", "Misses", "BioD Hits", "Misses");
  		printf(" %9.9s %9.9s\n", "DirE Hits", "Misses");
! 		printf("%9u %9u %9u %9u",
  			nfsstats.biocache_readlinks-nfsstats.readlink_bios,
  			nfsstats.readlink_bios,
  			nfsstats.biocache_readdirs-nfsstats.readdir_bios,
  			nfsstats.readdir_bios);
! 		printf(" %9u %9u\n",
  			nfsstats.direofcache_hits, nfsstats.direofcache_misses);
  	}
***************
*** 280,284 ****
  			"Getattr", "Setattr", "Lookup", "Readlink", "Read",
  			"Write", "Create", "Remove");
! 		printf("%9d %9d %9d %9d %9d %9d %9d %9d\n",
  			nfsstats.srvrpccnt[NFSPROC_GETATTR],
  			nfsstats.srvrpccnt[NFSPROC_SETATTR],
--- 280,284 ----
  			"Getattr", "Setattr", "Lookup", "Readlink", "Read",
  			"Write", "Create", "Remove");
! 		printf("%9u %9u %9u %9u %9u %9u %9u %9u\n",
  			nfsstats.srvrpccnt[NFSPROC_GETATTR],
  			nfsstats.srvrpccnt[NFSPROC_SETATTR],
***************
*** 292,296 ****
  			"Rename", "Link", "Symlink", "Mkdir", "Rmdir",
  			"Readdir", "RdirPlus", "Access");
! 		printf("%9d %9d %9d %9d %9d %9d %9d %9d\n",
  			nfsstats.srvrpccnt[NFSPROC_RENAME],
  			nfsstats.srvrpccnt[NFSPROC_LINK],
--- 292,296 ----
  			"Rename", "Link", "Symlink", "Mkdir", "Rmdir",
  			"Readdir", "RdirPlus", "Access");
! 		printf("%9u %9u %9u %9u %9u %9u %9u %9u\n",
  			nfsstats.srvrpccnt[NFSPROC_RENAME],
  			nfsstats.srvrpccnt[NFSPROC_LINK],
***************
*** 304,308 ****
  			"Mknod", "Fsstat", "Fsinfo", "PathConf", "Commit",
  			"GLease", "Vacate", "Evict");
! 		printf("%9d %9d %9d %9d %9d %9d %9d %9d\n",
  			nfsstats.srvrpccnt[NFSPROC_MKNOD],
  			nfsstats.srvrpccnt[NFSPROC_FSSTAT],
--- 304,308 ----
  			"Mknod", "Fsstat", "Fsinfo", "PathConf", "Commit",
  			"GLease", "Vacate", "Evict");
! 		printf("%9u %9u %9u %9u %9u %9u %9u %9u\n",
  			nfsstats.srvrpccnt[NFSPROC_MKNOD],
  			nfsstats.srvrpccnt[NFSPROC_FSSTAT],
***************
*** 314,324 ****
  			nfsstats.srvrpccnt[NQNFSPROC_EVICTED]);
  		printf("Server Ret-Failed\n");
! 		printf("%17d\n", nfsstats.srvrpc_errs);
  		printf("Server Faults\n");
! 		printf("%13d\n", nfsstats.srv_errs);
  		printf("Server Cache Stats:\n");
  		printf("%9.9s %9.9s %9.9s %9.9s\n",
  			"Inprog", "Idem", "Non-idem", "Misses");
! 		printf("%9d %9d %9d %9d\n",
  			nfsstats.srvcache_inproghits,
  			nfsstats.srvcache_idemdonehits,
--- 314,324 ----
  			nfsstats.srvrpccnt[NQNFSPROC_EVICTED]);
  		printf("Server Ret-Failed\n");
! 		printf("%17u\n", nfsstats.srvrpc_errs);
  		printf("Server Faults\n");
! 		printf("%13u\n", nfsstats.srv_errs);
  		printf("Server Cache Stats:\n");
  		printf("%9.9s %9.9s %9.9s %9.9s\n",
  			"Inprog", "Idem", "Non-idem", "Misses");
! 		printf("%9u %9u %9u %9u\n",
  			nfsstats.srvcache_inproghits,
  			nfsstats.srvcache_idemdonehits,
***************
*** 328,332 ****
  		printf("%9.9s %9.9s %9.9s\n",
  		"Leases", "PeakL", "GLeases");
! 		printf("%9d %9d %9d\n",
  			nfsstats.srvnqnfs_leases,
  			nfsstats.srvnqnfs_maxleases,
--- 328,332 ----
  		printf("%9.9s %9.9s %9.9s\n",
  		"Leases", "PeakL", "GLeases");
! 		printf("%9u %9u %9u\n",
  			nfsstats.srvnqnfs_leases,
  			nfsstats.srvnqnfs_maxleases,
***************
*** 335,339 ****
  		printf("%9.9s %9.9s %9.9s\n",
  			"WriteOps", "WriteRPC", "Opsaved");
! 		printf("%9d %9d %9d\n",
  			nfsstats.srvvop_writes,
  			nfsstats.srvrpccnt[NFSPROC_WRITE],
--- 335,339 ----
  		printf("%9.9s %9.9s %9.9s\n",
  			"WriteOps", "WriteRPC", "Opsaved");
! 		printf("%9u %9u %9u\n",
  			nfsstats.srvvop_writes,
  			nfsstats.srvrpccnt[NFSPROC_WRITE],

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020424162232.6039.qmail>