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>
