]> granicus.if.org Git - sysstat/commitdiff
Remove obsolete nfsiostat-sysstat command
authorSebastien GODARD <sysstat@users.noreply.github.com>
Sun, 25 Oct 2015 13:49:26 +0000 (14:49 +0100)
committerSebastien GODARD <sysstat@users.noreply.github.com>
Sun, 25 Oct 2015 13:49:26 +0000 (14:49 +0100)
Remove obsolete nfsiostat-sysstat command (an nfsiostat command already
exists in the nfs-utils package).

Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
Makefile.in
README
configure
configure.in
man/nfsiostat-sysstat.in [deleted file]
nfsiostat-sysstat.c [deleted file]
nfsiostat-sysstat.h [deleted file]

index 339c7fe0d8dbeea0dabb43cf17168c7fe5fc6e89..cde6839f931278505c4e2c604f6b787285611c79 100644 (file)
@@ -169,7 +169,7 @@ NLSPOT= $(NLSPO:.po=.pot)
 % : %.o
        $(CC) -o $@ $(CFLAGS) $^ $(LFLAGS)
 
-all: sadc sar sadf iostat tapestat mpstat pidstat nfsiostat-sysstat cifsiostat locales
+all: sadc sar sadf iostat tapestat mpstat pidstat cifsiostat locales
 
 common.o: common.c version.h common.h ioconf.h sysconfig.h
 
@@ -261,10 +261,6 @@ mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h count.h
 
 mpstat: mpstat.o librdstats_light.a libsyscom.a
 
-nfsiostat-sysstat.o: nfsiostat-sysstat.c nfsiostat-sysstat.h count.h version.h common.h
-
-nfsiostat-sysstat: nfsiostat-sysstat.o librdstats_light.a libsyscom.a
-
 cifsiostat.o: cifsiostat.c cifsiostat.h count.h version.h common.h
 
 cifsiostat: cifsiostat.o librdstats_light.a libsyscom.a
@@ -307,8 +303,6 @@ ifeq ($(INSTALL_DOC),y)
        $(INSTALL_DATA) $(MANGRPARG) man/mpstat.1 $(DESTDIR)$(MAN1_DIR)
        rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
        $(INSTALL_DATA) $(MANGRPARG) man/pidstat.1 $(DESTDIR)$(MAN1_DIR)
-       rm -f $(DESTDIR)$(MAN1_DIR)/nfsiostat-sysstat.1*
-       $(INSTALL_DATA) $(MANGRPARG) man/nfsiostat-sysstat.1 $(DESTDIR)$(MAN1_DIR)
        rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
        $(INSTALL_DATA) $(MANGRPARG) man/cifsiostat.1 $(DESTDIR)$(MAN1_DIR)
 ifeq ($(INSTALL_ISAG),y)
@@ -325,7 +319,6 @@ ifeq ($(COMPRESS_MANPG),y)
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/tapestat.1
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/mpstat.1
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/pidstat.1
-       $(ZIP) $(DESTDIR)$(MAN1_DIR)/nfsiostat-sysstat.1
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/cifsiostat.1
 ifeq ($(INSTALL_ISAG),y)
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/isag.1
@@ -374,7 +367,6 @@ endif
        $(INSTALL_BIN) tapestat $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) mpstat $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) pidstat $(DESTDIR)$(BIN_DIR)
-       $(INSTALL_BIN) nfsiostat-sysstat $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) cifsiostat $(DESTDIR)$(BIN_DIR)
 ifeq ($(INSTALL_ISAG),y)
        $(INSTALL_BIN) contrib/isag/isag $(DESTDIR)$(BIN_DIR)
@@ -480,7 +472,6 @@ ifeq ($(INSTALL_DOC),y)
        rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
        rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
        rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
-       rm -f $(DESTDIR)$(MAN1_DIR)/nfsiostat-sysstat.1*
        rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
 ifeq ($(INSTALL_ISAG),y)
        rm -f $(DESTDIR)$(MAN1_DIR)/isag.1
@@ -509,7 +500,6 @@ uninstall_base: uninstall_man uninstall_nls
        rm -f $(DESTDIR)$(BIN_DIR)/tapestat
        rm -f $(DESTDIR)$(BIN_DIR)/mpstat
        rm -f $(DESTDIR)$(BIN_DIR)/pidstat
-       rm -f $(DESTDIR)$(BIN_DIR)/nfsiostat-sysstat
        rm -f $(DESTDIR)$(BIN_DIR)/cifsiostat
 ifeq ($(INSTALL_ISAG),y)
        rm -f $(DESTDIR)$(BIN_DIR)/isag
@@ -588,7 +578,7 @@ po-files:
 endif
 
 clean:
-       rm -f sadc sar sadf iostat tapestat mpstat pidstat nfsiostat-sysstat cifsiostat *.o *.a core TAGS
+       rm -f sadc sar sadf iostat tapestat mpstat pidstat cifsiostat *.o *.a core TAGS
        find nls -name "*.gmo" -exec rm -f {} \;
 
 almost-distclean: clean nls/sysstat.pot
@@ -598,7 +588,7 @@ almost-distclean: clean nls/sysstat.pot
        rm -f cron/sysstat.cron.hourly cron/sysstat.crond.sample cron/sysstat.crond.sample.in
        rm -f contrib/isag/isag
        rm -f man/sa1.8 man/sa2.8 man/sadc.8 man/sadf.1 man/sar.1 man/iostat.1 man/sysstat.5
-       rm -f man/cifsiostat.1 man/nfsiostat-sysstat.1
+       rm -f man/cifsiostat.1
        rm -f *.log config.status
        rm -rf autom4te.cache
        rm -f *.save *.old .*.swp data
diff --git a/README b/README
index 30f32bb05f1751e465aeb0585aab236008db4b0b..37844c40dd589460a390f6e8a2c5e7e37a4724fa 100644 (file)
--- a/README
+++ b/README
@@ -22,7 +22,7 @@ INSTALLATION
 ------------
 
 The sysstat utilities are a collection of performance monitoring tools for
-Linux. These include mpstat, iostat, tapestat, nfsiostat-sysstat, cifsiostat,
+Linux. These include mpstat, iostat, tapestat, cifsiostat,
 pidstat, sar, sadc, sadf and sa tools. 
 
 The first stage is to configure sysstat for your system:
@@ -74,7 +74,6 @@ ${PREFIX}/bin/iostat
 ${PREFIX}/bin/tapestat
 ${PREFIX}/bin/mpstat
 ${PREFIX}/bin/pidstat
-${PREFIX}/bin/nfsiostat-sysstat
 ${PREFIX}/bin/cifsiostat
 ${PREFIX}(/share)/man/man8/sadc.8
 ${PREFIX}(/share)/man/man8/sa1.8
@@ -85,7 +84,6 @@ ${PREFIX}(/share)/man/man1/iostat.1
 ${PREFIX}(/share)/man/man1/tapestat.1
 ${PREFIX}(/share)/man/man1/mpstat.1
 ${PREFIX}(/share)/man/man1/pidstat.1
-${PREFIX}(/share)/man/man1/nfsiostat-sysstat.1
 ${PREFIX}(/share)/man/man1/cifsiostat.1
 ${PREFIX}/share/locale/*/LC_MESSAGES/sysstat.mo
 ${PREFIX}/share/doc/sysstat-x.y.z/*
index 8f6e1526def2cc06bf7478d0c9a40ca591633ce2..cf057e156c774c96b820249e5a848426c7c50b2b 100755 (executable)
--- a/configure
+++ b/configure
@@ -5429,8 +5429,6 @@ ac_config_files="$ac_config_files man/iostat.1:man/iostat.in"
        # File must be renamed
 ac_config_files="$ac_config_files man/cifsiostat.1:man/cifsiostat.in"
        # File must be renamed
-ac_config_files="$ac_config_files man/nfsiostat-sysstat.1:man/nfsiostat-sysstat.in"
-       # File must be renamed
 ac_config_files="$ac_config_files contrib/isag/isag"
  # Permissions must be changed
 
@@ -6166,7 +6164,6 @@ do
     "man/sysstat.5") CONFIG_FILES="$CONFIG_FILES man/sysstat.5:man/sysstat.in" ;;
     "man/iostat.1") CONFIG_FILES="$CONFIG_FILES man/iostat.1:man/iostat.in" ;;
     "man/cifsiostat.1") CONFIG_FILES="$CONFIG_FILES man/cifsiostat.1:man/cifsiostat.in" ;;
-    "man/nfsiostat-sysstat.1") CONFIG_FILES="$CONFIG_FILES man/nfsiostat-sysstat.1:man/nfsiostat-sysstat.in" ;;
     "contrib/isag/isag") CONFIG_FILES="$CONFIG_FILES contrib/isag/isag" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
 
index b429b618fc09b4f3f9c758e22d7e7b48cacb18ad..16873640ab3285730754d2cc8b5af7da35948f54 100644 (file)
@@ -609,7 +609,6 @@ AC_CONFIG_FILES([man/sar.1:man/sar.in])             # File must be renamed
 AC_CONFIG_FILES([man/sysstat.5:man/sysstat.in])        # File must be renamed
 AC_CONFIG_FILES([man/iostat.1:man/iostat.in])  # File must be renamed
 AC_CONFIG_FILES([man/cifsiostat.1:man/cifsiostat.in])  # File must be renamed
-AC_CONFIG_FILES([man/nfsiostat-sysstat.1:man/nfsiostat-sysstat.in])    # File must be renamed
 AC_CONFIG_FILES([contrib/isag/isag], [chmod +x contrib/isag/isag]) # Permissions must be changed
 
 AC_OUTPUT(Makefile)
diff --git a/man/nfsiostat-sysstat.in b/man/nfsiostat-sysstat.in
deleted file mode 100644 (file)
index c8a4ed7..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-.TH NFSIOSTAT-SYSSTAT 1 "JANUARY 2014" Linux "Linux User's Manual" -*- nroff -*-
-.SH NAME
-nfsiostat-sysstat (the nfsiostat command from the sysstat package) \- Report input/output statistics for network filesystems (NFS).
-.SH SYNOPSIS
-.ie 'yes'@WITH_DEBUG@' \{
-.B nfsiostat-sysstat [ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ] [
-.I interval
-.B [
-.I count
-.B ] ]
-.\}
-.el \{
-.B nfsiostat-sysstat [ -h ] [ -k | -m ] [ -t ] [ -V ] [
-.I interval
-.B [
-.I count
-.B ] ]
-.\}
-.SH DESCRIPTION
-The
-.B nfsiostat-sysstat
-command displays statistics about read and write operations
-on NFS filesystems.
-
-The
-.I interval
-parameter specifies the amount of time in seconds between
-each report. The first report contains statistics for the time since
-system startup (boot). Each subsequent report contains statistics
-collected during the interval since the previous report.
-A report consists of an NFS header row followed by
-a line of statistics for each network filesystem that is mounted.
-The
-.I count
-parameter can be specified in conjunction with the
-.I interval
-parameter. If the
-.I count
-parameter is specified, the value of
-.I count
-determines the number of reports generated at
-.I interval
-seconds apart. If the
-.I interval
-parameter is specified without the
-.I count
-parameter, the
-.B nfsiostat-sysstat
-command generates reports continuously.
-
-.SH REPORT
-The Network Filesystem (NFS) report provides statistics for each mounted network filesystem.
-Transfer rates are shown in 1K blocks by default, unless the environment
-variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used.
-The report shows the following fields:
-
-.B Filesystem:
-.RS
-This columns shows the hostname of the NFS server followed by a colon and
-by the directory name where the network filesystem is mounted.
-
-.RE
-.B rBlk_nor/s (rkB_nor/s, rMB_nor)
-.RS
-Indicate the number of blocks (kilobytes, megabytes) read by applications
-via the read(2) system
-call interface. A block has a size of 512 bytes.
-
-.RE
-.B wBlk_nor/s (wkB_nor/s, wMB_nor/s)
-.RS
-Indicate the number of blocks (kilobytes, megabytes) written by applications
-via the write(2) system
-call interface.
-
-.RE
-.B rBlk_dir/s (rkB_dir/s, rMB_dir/s)
-.RS
-Indicate the number of blocks (kilobytes, megabytes) read from files
-opened with the O_DIRECT flag.
-
-.RE
-.B wBlk_dir/s (wkB_dir/s, wMB_dir/s)
-.RS
-Indicate the number of blocks (kilobytes, megabytes) written to files
-opened with the O_DIRECT flag.
-
-.RE
-.B rBlk_svr/s (rkB_svr/s, rMB_svr/s)
-.RS
-Indicate the number of blocks (kilobytes, megabytes) read from the server
-by the NFS client via an NFS READ request.
-
-.RE
-.B wBlk_svr/s (wkB_svr/s, wMB_svr/s)
-.RS
-Indicate the number of blocks (kilobytes, megabytes) written to the server
-by the NFS client via an NFS WRITE request.
-
-.RE
-.B ops/s
-.RS
-Indicate the number of operations that were issued to the filesystem per second.
-
-.RE
-.B rops/s
-.RS
-Indicate the number of 'read' operations that were issued to the filesystem 
-per second.
-
-.RE
-.B wops/s
-.RS
-Indicate the number of 'write' operations that were issued to the filesystem
-per second.
-.RE
-.RE
-.SH OPTIONS
-.if 'yes'@WITH_DEBUG@' \{
-.IP --debuginfo
-Print debug output to stderr.
-.\}
-.IP -h
-Make the NFS report easier to read by a human.
-.IP -k
-Display statistics in kilobytes per second.
-.IP -m
-Display statistics in megabytes per second.
-.IP -t
-Print the time for each report displayed. The timestamp format may depend
-on the value of the S_TIME_FORMAT environment variable (see below).
-.IP -V
-Print version number then exit.
-
-.SH ENVIRONMENT
-The
-.B nfsiostat-sysstat
-command takes into account the following environment variables:
-
-.IP S_TIME_FORMAT
-If this variable exists and its value is
-.BR ISO
-then the current locale will be ignored when printing the date in the report
-header. The
-.B nfsiostat-sysstat
-command will use the ISO 8601 format (YYYY-MM-DD) instead.
-The timestamp displayed with option -t will also be compliant with ISO 8601
-format.
-
-.IP POSIXLY_CORRECT
-When this variable is set, transfer rates are shown in 512-byte blocks instead
-of the default 1K blocks.
-
-.SH BUG
-.I /proc
-filesystem must be mounted for
-.B nfsiostat-sysstat
-to work.
-
-.SH FILE
-.I /proc/self/mountstats
-contains statistics for network filesystems.
-
-.SH WARNING
-The nfsiostat
-command from the sysstat package (nfsiostat-sysstat) is now obsolete and is no longer maintained.
-It will be removed in a future sysstat version.
-Please use now the
-.B nfsiostat
-command from the
-.I nfs-utils
-package. 
-
-.SH AUTHOR
-Written by Ivana Varekova (varekova <at> redhat.com)
-
-.SH SEE ALSO
-.BR nfsiostat (8),
-.BR sar (1),
-.BR pidstat (1),
-.BR mpstat (1),
-.BR vmstat (8),
-.BR iostat (1),
-.BR cifsiostat (1)
-
diff --git a/nfsiostat-sysstat.c b/nfsiostat-sysstat.c
deleted file mode 100644 (file)
index 24d4773..0000000
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * nfsiostat-sysstat: Report NFS I/O statistics
- * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved
- * Written by Ivana Varekova <varekova@redhat.com>
- *
- ***************************************************************************
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU General Public License as published  by  the *
- * Free Software Foundation; either version 2 of the License, or (at  your *
- * option) any later version.                                              *
- *                                                                         *
- * This program is distributed in the hope that it  will  be  useful,  but *
- * WITHOUT ANY WARRANTY; without the implied warranty  of  MERCHANTABILITY *
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
- * for more details.                                                       *
- *                                                                         *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                   *
- ***************************************************************************
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-#include <sys/utsname.h>
-
-#include "version.h"
-#include "nfsiostat-sysstat.h"
-#include "count.h"
-#include "common.h"
-
-#ifdef USE_NLS
-#include <locale.h>
-#include <libintl.h>
-#define _(string) gettext(string)
-#else
-#define _(string) (string)
-#endif
-
-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
-char *sccsid(void) { return (SCCSID); }
-
-unsigned long long uptime0[2] = {0, 0};
-struct io_nfs_stats *st_ionfs[2];
-struct io_hdr_stats *st_hdr_ionfs;
-
-int ionfs_nr = 0;      /* Nb of NFS mounted directories found */
-int cpu_nr = 0;                /* Nb of processors on the machine */
-int flags = 0;         /* Flag for common options and system state */
-
-long interval = 0;
-char timestamp[64];
-
-struct sigaction alrm_act;
-
-/*
- ***************************************************************************
- * Print usage and exit.
- *
- * IN:
- * @progname   Name of sysstat command.
- ***************************************************************************
- */
-void usage(char *progname)
-{
-       fprintf(stderr, _("Usage: %s [ options ] [ <interval> [ <count> ] ]\n"),
-               progname);
-
-#ifdef DEBUG
-       fprintf(stderr, _("Options are:\n"
-                         "[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"));
-#else
-       fprintf(stderr, _("Options are:\n"
-                         "[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"));
-#endif
-       exit(1);
-}
-
-/*
- ***************************************************************************
- * Set output unit. Unit will be kB/s unless POSIXLY_CORRECT
- * environment variable has been set, in which case the output will be
- * expressed in blocks/s.
- ***************************************************************************
- */
-void set_output_unit(void)
-{
-       if (DISPLAY_KILOBYTES(flags) || DISPLAY_MEGABYTES(flags))
-               return;
-
-       /* Check POSIXLY_CORRECT environment variable */
-       if (getenv(ENV_POSIXLY_CORRECT) == NULL) {
-               /* Variable not set: Unit is kB/s and not blocks/s */
-               flags |= I_D_KILOBYTES;
-       }
-}
-
-/*
- ***************************************************************************
- * SIGALRM signal handler.
- *
- * IN:
- * @sig        Signal number.
- ***************************************************************************
- */
-void alarm_handler(int sig)
-{
-       alarm(interval);
-}
-
-/*
- ***************************************************************************
- * Find number of NFS-mounted points that are registered in
- * /proc/self/mountstats.
- *
- * RETURNS:
- * Number of NFS-mounted points.
- ***************************************************************************
- */
-int get_nfs_mount_nr(void)
-{
-       FILE *fp;
-       char line[8192];
-       char type_name[10];
-       unsigned int nfs = 0;
-
-       if ((fp = fopen(NFSMOUNTSTATS, "r")) == NULL)
-               /* File non-existent */
-               return 0;
-
-       while (fgets(line, sizeof(line), fp) != NULL) {
-
-               if ((strstr(line, "mounted")) && (strstr(line, "on")) &&
-                   (strstr(line, "with")) && (strstr(line, "fstype"))) {
-
-                       sscanf(strstr(line, "fstype") + 6, "%9s", type_name);
-                       if ((!strncmp(type_name, "nfs", 3)) && (strncmp(type_name, "nfsd", 4))) {
-                               nfs ++;
-                       }
-               }
-       }
-
-       fclose(fp);
-
-       return nfs;
-}
-
-/*
- ***************************************************************************
- * Set every nfs_io entry to inactive state (unregistered).
- ***************************************************************************
- */
-void set_entries_inactive(void)
-{
-       int i;
-       struct io_hdr_stats *shi = st_hdr_ionfs;
-
-       for (i = 0; i < ionfs_nr; i++, shi++) {
-               shi->active = FALSE;
-       }
-}
-
-/*
- ***************************************************************************
- * Free inactive entries (mark them as unused).
- ***************************************************************************
- */
-void free_inactive_entries(void)
-{
-       int i;
-       struct io_hdr_stats *shi = st_hdr_ionfs;
-
-       for (i = 0; i < ionfs_nr; i++, shi++) {
-               if (!shi->active) {
-                       shi->used = FALSE;
-               }
-       }
-}
-
-/*
- ***************************************************************************
- * Allocate and init structures, according to system state.
- ***************************************************************************
- */
-void io_sys_init(void)
-{
-       int i;
-
-       /* How many processors on this machine? */
-       cpu_nr = get_cpu_nr(~0, FALSE);
-
-       /* Get number of NFS directories in /proc/self/mountstats */
-       if ((ionfs_nr = get_nfs_mount_nr()) > 0) {
-               ionfs_nr += NR_NFS_PREALLOC;
-       }
-       if ((st_hdr_ionfs = (struct io_hdr_stats *) calloc(ionfs_nr, IO_HDR_STATS_SIZE)) == NULL) {
-               perror("malloc");
-               exit(4);
-       }
-
-       /* Allocate structures for number of NFS directories found */
-       for (i = 0; i < 2; i++) {
-               if ((st_ionfs[i] =
-                   (struct io_nfs_stats *) calloc(ionfs_nr, IO_NFS_STATS_SIZE)) == NULL) {
-                       perror("malloc");
-                       exit(4);
-               }
-       }
-}
-
-/*
- ***************************************************************************
- * Free various structures.
- ***************************************************************************
-*/
-void io_sys_free(void)
-{
-       int i;
-
-       /* Free I/O NFS directories structures */
-       for (i = 0; i < 2; i++) {
-               free(st_ionfs[i]);
-       }
-
-       free(st_hdr_ionfs);
-}
-
-/*
- ***************************************************************************
- * Save stats for current NFS filesystem.
- *
- * IN:
- * @name               Name of NFS filesystem.
- * @curr               Index in array for current sample statistics.
- * @st_io              Structure with NFS statistics to save.
- * @ionfs_nr           Number of NFS filesystems.
- * @st_hdr_ionfs       Pointer on structures describing an NFS filesystem.
- *
- * OUT:
- * @st_hdr_ionfs       Pointer on structures describing an NFS filesystem.
- ***************************************************************************
- */
-void save_stats(char *name, int curr, void *st_io)
-{
-       int i, j;
-       struct io_hdr_stats *st_hdr_ionfs_i;
-       struct io_nfs_stats *st_ionfs_i;
-
-       /* Look for NFS directory in data table */
-       for (i = 0; i < ionfs_nr; i++) {
-               st_hdr_ionfs_i = st_hdr_ionfs + i;
-               if ((st_hdr_ionfs_i->used) &&
-                   (!strcmp(st_hdr_ionfs_i->name, name))) {
-                       break;
-               }
-       }
-
-       if (i == ionfs_nr) {
-               /*
-                * This is a new filesystem: Look for an unused entry to store it.
-                */
-               for (i = 0; i < ionfs_nr; i++) {
-                       st_hdr_ionfs_i = st_hdr_ionfs + i;
-                       if (!st_hdr_ionfs_i->used) {
-                               /* Unused entry found... */
-                               st_hdr_ionfs_i->used = TRUE; /* Indicate it is now used */
-                               st_hdr_ionfs_i->active = TRUE;
-
-                               strncpy(st_hdr_ionfs_i->name, name, MAX_NAME_LEN - 1);
-                               st_hdr_ionfs_i->name[MAX_NAME_LEN - 1] = '\0';
-                               st_ionfs_i = st_ionfs[curr] + i;
-                               memset(st_ionfs_i, 0, IO_NFS_STATS_SIZE);
-                               *st_ionfs_i = *((struct io_nfs_stats *) st_io);
-                               break;
-                       }
-               }
-               if (i == ionfs_nr) {
-                       /* All entries are used: The number has to be increased */
-                       ionfs_nr = ionfs_nr + 5;
-
-                       /* Increase the size of st_hdr_ionfs buffer */
-                       if ((st_hdr_ionfs = (struct io_hdr_stats *)
-                               realloc(st_hdr_ionfs, ionfs_nr * IO_HDR_STATS_SIZE)) == NULL) {
-                               perror("malloc");
-                               exit(4);
-                       }
-
-                       /* Set the new entries inactive */
-                       for (j = 0; j < 5; j++) {
-                               st_hdr_ionfs_i = st_hdr_ionfs + i + j;
-                               st_hdr_ionfs_i->used = FALSE;
-                               st_hdr_ionfs_i->active = FALSE;
-                       }
-
-                       /* Increase the size of st_hdr_ionfs buffer */
-                       for (j = 0; j < 2; j++) {
-                               if ((st_ionfs[j] = (struct io_nfs_stats *)
-                                       realloc(st_ionfs[j], ionfs_nr * IO_NFS_STATS_SIZE)) == NULL) {
-                                       perror("malloc");
-                                       exit(4);
-                               }
-                               memset(st_ionfs[j] + i, 0, 5 * IO_NFS_STATS_SIZE);
-                       }
-
-                       /* Now i shows the first unused entry of the new block */
-                       st_hdr_ionfs_i = st_hdr_ionfs + i;
-                       st_hdr_ionfs_i->used = TRUE; /* Indicate it is now used */
-                       strncpy(st_hdr_ionfs_i->name, name, MAX_NAME_LEN - 1);
-                       st_hdr_ionfs_i->name[MAX_NAME_LEN - 1] = '\0';
-                       st_ionfs_i = st_ionfs[curr] + i;
-                       memset(st_ionfs_i, 0, IO_NFS_STATS_SIZE);
-               }
-       } else  {
-               st_hdr_ionfs_i = st_hdr_ionfs + i;
-               st_hdr_ionfs_i->used = TRUE;
-               st_hdr_ionfs_i->active = TRUE;
-               st_ionfs_i = st_ionfs[curr] + i;
-               *st_ionfs_i = *((struct io_nfs_stats *) st_io);
-       }
-       /*
-        * else it was a new NFS directory
-        * but there was no free structure to store it.
-        */
-}
-
-/*
- ***************************************************************************
- * Read NFS-mount directories stats from /proc/self/mountstats.
- *
- * IN:
- * @curr       Index in array for current sample statistics.
- ***************************************************************************
- */
-void read_nfs_stat(int curr)
-{
-       FILE *fp;
-       int sw = 0;
-       char line[256];
-       char *xprt_line;
-       char *mount_part;
-       char nfs_name[MAX_NAME_LEN];
-       char mount[10], on[10], prefix[10], aux[32];
-       char operation[16];
-       struct io_nfs_stats snfs = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-       long int v1;
-
-       /* Every I/O NFS entry is potentially unregistered */
-       set_entries_inactive();
-
-       if ((fp = fopen(NFSMOUNTSTATS, "r")) == NULL)
-               return;
-
-       sprintf(aux, "%%%ds",
-               MAX_NAME_LEN < 200 ? MAX_NAME_LEN-1 : 200);
-
-       while (fgets(line, sizeof(line), fp) != NULL) {
-               /* Read NFS directory name */
-               if (!strncmp(line, "device", 6)) {
-                       sw = 0;
-                       sscanf(line + 6, aux, nfs_name);
-                       mount_part = strchr(line + 7, ' ');
-                       if (mount_part != NULL) {
-                               sscanf(mount_part, "%9s %9s", mount, on);
-                               if ((!strncmp(mount, "mounted", 7)) && (!strncmp(on, "on", 2))) {
-                                       sw = 1;
-                               }
-                       }
-               }
-
-               sscanf(line, "%9s", prefix);
-               if (sw && (!strncmp(prefix, "bytes:", 6))) {
-                       /* Read the stats for the last NFS-mounted directory */
-                       sscanf(strstr(line, "bytes:") + 6, "%llu %llu %llu %llu %llu %llu",
-                              &snfs.rd_normal_bytes, &snfs.wr_normal_bytes,
-                              &snfs.rd_direct_bytes, &snfs.wr_direct_bytes,
-                              &snfs.rd_server_bytes, &snfs.wr_server_bytes);
-                       sw = 2;
-               }
-
-               if ((sw == 2) && (!strncmp(prefix, "xprt:", 5))) {
-                       /*
-                        * Read extended statistic for the last NFS-mounted directory
-                        * - number of sent rpc requests.
-                        */
-                       xprt_line = (strstr(line, "xprt:") + 6);
-                       /* udp, tcp or rdma data */
-                       if (!strncmp(xprt_line, "udp", 3)) {
-                               /* port bind_count sends recvs (bad_xids req_u bklog_u) */
-                               sscanf(strstr(xprt_line, "udp") + 4, "%*u %*u %lu",
-                                      &snfs.rpc_sends);
-                       }
-                       if (!strncmp(xprt_line, "tcp", 3)) {
-                               /*
-                                * port bind_counter connect_count connect_time idle_time
-                                * sends recvs (bad_xids req_u bklog_u)
-                                */
-                               sscanf(strstr(xprt_line, "tcp") + 4,
-                                      "%*u %*u %*u %*u %*d %lu",
-                                      &snfs.rpc_sends);
-                       }
-                       if (!strncmp(xprt_line,"rdma", 4)) {
-                               /*
-                                * 0(port) bind_count connect_count connect_time idle_time
-                                * sends recvs (bad_xids req_u bklog_u...)
-                                */
-                               sscanf(strstr(xprt_line, "rdma") + 5,
-                                      "%*u %*u %*u %*u %*d %lu",
-                                      &snfs.rpc_sends);
-                       }
-                       sw = 3;
-               }
-
-               if ((sw == 3) && (!strncmp(prefix, "per-op", 6))) {
-                       sw = 4;
-                       while (sw == 4) {
-                               if (fgets(line, sizeof(line), fp) == NULL)
-                                       break;
-                               sscanf(line, "%15s %ld", operation, &v1);
-                               if (!strncmp(operation, "READ:", 5)) {
-                                       snfs.nfs_rops = v1;
-                               }
-                               else if (!strncmp(operation, "WRITE:", 6)) {
-                                       snfs.nfs_wops = v1;
-
-                                       save_stats(nfs_name, curr, &snfs);
-                                       sw = 0;
-                               }
-                       }
-               }
-       }
-
-       fclose(fp);
-
-       /* Free structures corresponding to unregistered filesystems */
-       free_inactive_entries();
-}
-
-/*
- ***************************************************************************
- * Display NFS stats header.
- *
- * OUT:
- * @fctr       Conversion factor.
- ***************************************************************************
- */
-void write_nfs_stat_header(int *fctr)
-{
-       printf("Filesystem:           ");
-       if (DISPLAY_KILOBYTES(flags)) {
-               printf("    rkB_nor/s    wkB_nor/s    rkB_dir/s    wkB_dir/s"
-                      "    rkB_svr/s    wkB_svr/s");
-               *fctr = 1024;
-       }
-       else if (DISPLAY_MEGABYTES(flags)) {
-               printf("    rMB_nor/s    wMB_nor/s    rMB_dir/s    wMB_dir/s"
-                      "    rMB_svr/s    wMB_svr/s");
-               *fctr = 1024 * 1024;
-       }
-       else {
-               printf("   rBlk_nor/s   wBlk_nor/s   rBlk_dir/s   wBlk_dir/s"
-                      "   rBlk_svr/s   wBlk_svr/s");
-               *fctr = 512;
-       }
-       printf("     ops/s    rops/s    wops/s\n");
-}
-
-/*
- ***************************************************************************
- * Write NFS stats read from /proc/self/mountstats.
- *
- * IN:
- * @curr       Index in array for current sample statistics.
- * @itv                Interval of time.
- * @fctr       Conversion factor.
- * @shi                Structures describing the NFS filesystems.
- * @ioi                Current sample statistics.
- * @ioj                Previous sample statistics.
- ***************************************************************************
- */
-void write_nfs_stat(int curr, unsigned long long itv, int fctr,
-                   struct io_hdr_stats *shi, struct io_nfs_stats *ioni,
-                   struct io_nfs_stats *ionj)
-{
-       if (DISPLAY_HUMAN_READ(flags)) {
-               printf("%-22s\n%23s", shi->name, "");
-       }
-       else {
-               printf("%-22s ", shi->name);
-       }
-       printf("%12.2f %12.2f %12.2f %12.2f %12.2f %12.2f %9.2f %9.2f %9.2f\n",
-              S_VALUE(ionj->rd_normal_bytes, ioni->rd_normal_bytes, itv) / fctr,
-              S_VALUE(ionj->wr_normal_bytes, ioni->wr_normal_bytes, itv) / fctr,
-              S_VALUE(ionj->rd_direct_bytes, ioni->rd_direct_bytes, itv) / fctr,
-              S_VALUE(ionj->wr_direct_bytes, ioni->wr_direct_bytes, itv) / fctr,
-              S_VALUE(ionj->rd_server_bytes, ioni->rd_server_bytes, itv) / fctr,
-              S_VALUE(ionj->wr_server_bytes, ioni->wr_server_bytes, itv) / fctr,
-              S_VALUE(ionj->rpc_sends, ioni->rpc_sends, itv),
-              S_VALUE(ionj->nfs_rops,  ioni->nfs_rops,  itv),
-              S_VALUE(ionj->nfs_wops,  ioni->nfs_wops,  itv));
-}
-
-/*
- ***************************************************************************
- * Print everything now (stats and uptime).
- *
- * IN:
- * @curr       Index in array for current sample statistics.
- * @rectime    Current date and time.
- ***************************************************************************
- */
-void write_stats(int curr, struct tm *rectime)
-{
-       int i, fctr = 1;
-       unsigned long long itv;
-       struct io_hdr_stats *shi;
-       struct io_nfs_stats *ioni, *ionj;
-
-       /* Test stdout */
-       TEST_STDOUT(STDOUT_FILENO);
-
-       /* Print time stamp */
-       if (DISPLAY_TIMESTAMP(flags)) {
-               if (DISPLAY_ISO(flags)) {
-                       strftime(timestamp, sizeof(timestamp), "%FT%T%z", rectime);
-               }
-               else {
-                       strftime(timestamp, sizeof(timestamp), "%x %X", rectime);
-               }
-               printf("%s\n", timestamp);
-#ifdef DEBUG
-               if (DISPLAY_DEBUG(flags)) {
-                       fprintf(stderr, "%s\n", timestamp);
-               }
-#endif
-       }
-
-       /* Interval of time, reduced to one processor */
-       itv = get_interval(uptime0[!curr], uptime0[curr]);
-
-       shi = st_hdr_ionfs;
-
-       /* Display NFS stats header */
-       write_nfs_stat_header(&fctr);
-
-       for (i = 0; i < ionfs_nr; i++, shi++) {
-               if (shi->used) {
-                       ioni = st_ionfs[curr]  + i;
-                       ionj = st_ionfs[!curr] + i;
-#ifdef DEBUG
-                       if (DISPLAY_DEBUG(flags)) {
-                               /* Debug output */
-                               fprintf(stderr, "name=%s itv=%llu fctr=%d ioni{ rd_normal_bytes=%llu "
-                                               "wr_normal_bytes=%llu rd_direct_bytes=%llu wr_direct_bytes=%llu rd_server_bytes=%llu "
-                                               "wr_server_bytes=%llu rpc_sends=%lu nfs_rops=%lu nfs_wops=%lu }\n",
-                                       shi->name, itv, fctr,
-                                       ioni->rd_normal_bytes, ioni->wr_normal_bytes,
-                                       ioni->rd_direct_bytes, ioni->wr_direct_bytes,
-                                       ioni->rd_server_bytes, ioni->wr_server_bytes,
-                                       ioni->rpc_sends,
-                                       ioni->nfs_rops,        ioni->nfs_wops);
-                       }
-#endif
-                       write_nfs_stat(curr, itv, fctr, shi, ioni, ionj);
-               }
-       }
-       printf("\n");
-}
-
-/*
- ***************************************************************************
- * Main loop: Read stats from the relevant sources and display them.
- *
- * IN:
- * @count      Number of lines of stats to print.
- * @rectime    Current date and time.
- ***************************************************************************
- */
-void rw_io_stat_loop(long int count, struct tm *rectime)
-{
-       int curr = 1;
-
-       /* Don't buffer data if redirected to a pipe */
-       setbuf(stdout, NULL);
-
-       do {
-               /* Read system uptime (reduced to one processor) */
-               uptime0[curr] = 0;
-               read_uptime(&(uptime0[curr]));
-               if (!uptime0[curr])
-                       /* Cannot read system uptime (/proc/uptime doesn't exist) */
-                       exit(2);
-
-               /* Read NFS directories stats */
-               read_nfs_stat(curr);
-
-               /* Get time */
-               get_localtime(rectime, 0);
-
-               /* Print results */
-               write_stats(curr, rectime);
-
-               if (count > 0) {
-                       count--;
-               }
-               if (count) {
-                       curr ^= 1;
-                       pause();
-               }
-       }
-       while (count);
-}
-
-/*
- ***************************************************************************
- * Main entry to the nfsiostat-sysstat program.
- ***************************************************************************
- */
-int main(int argc, char **argv)
-{
-       int it = 0;
-       int opt = 1;
-       int i;
-       long count = 1;
-       struct utsname header;
-       struct tm rectime;
-
-#ifdef USE_NLS
-       /* Init National Language Support */
-       init_nls();
-#endif
-
-       /* Get HZ */
-       get_HZ();
-
-       /* Process args... */
-       while (opt < argc) {
-
-#ifdef DEBUG
-               if (!strcmp(argv[opt], "--debuginfo")) {
-                       flags |= I_D_DEBUG;
-                       opt++;
-               } else
-#endif
-               if (!strncmp(argv[opt], "-", 1)) {
-                       for (i = 1; *(argv[opt] + i); i++) {
-
-                               switch (*(argv[opt] + i)) {
-
-                               case 'h':
-                                       /* Display an easy-to-read NFS report */
-                                       flags |= I_D_HUMAN_READ;
-                                       break;
-
-                               case 'k':
-                                       if (DISPLAY_MEGABYTES(flags)) {
-                                               usage(argv[0]);
-                                       }
-                                       /* Display stats in kB/s */
-                                       flags |= I_D_KILOBYTES;
-                                       break;
-
-                               case 'm':
-                                       if (DISPLAY_KILOBYTES(flags)) {
-                                               usage(argv[0]);
-                                       }
-                                       /* Display stats in MB/s */
-                                       flags |= I_D_MEGABYTES;
-                                       break;
-
-                               case 't':
-                                       /* Display timestamp */
-                                       flags |= I_D_TIMESTAMP;
-                                       break;
-
-                               case 'V':
-                                       /* Print version number and exit */
-                                       print_version();
-                                       break;
-
-                               default:
-                                       usage(argv[0]);
-                               }
-                       }
-                       opt++;
-               }
-
-               else if (!it) {
-                       interval = atol(argv[opt++]);
-                       if (interval < 0) {
-                               usage(argv[0]);
-                       }
-                       count = -1;
-                       it = 1;
-               }
-
-               else if (it > 0) {
-                       count = atol(argv[opt++]);
-                       if ((count < 1) || !interval) {
-                               usage(argv[0]);
-                       }
-                       it = -1;
-               }
-               else {
-                       usage(argv[0]);
-               }
-       }
-
-       if (!interval) {
-               count = 1;
-       }
-
-       /* Select output unit (kB/s or blocks/s) */
-       set_output_unit();
-
-       /* Init structures according to machine architecture */
-       io_sys_init();
-
-       get_localtime(&rectime, 0);
-
-       /* Get system name, release number and hostname */
-       uname(&header);
-       if (print_gal_header(&rectime, header.sysname, header.release,
-                            header.nodename, header.machine, cpu_nr)) {
-               flags |= I_D_ISO;
-       }
-       printf("\n");
-
-       /* Set a handler for SIGALRM */
-       memset(&alrm_act, 0, sizeof(alrm_act));
-       alrm_act.sa_handler = alarm_handler;
-       sigaction(SIGALRM, &alrm_act, NULL);
-       alarm(interval);
-
-       /* Main loop */
-       rw_io_stat_loop(count, &rectime);
-
-       /* Free structures */
-       io_sys_free();
-
-       return 0;
-}
diff --git a/nfsiostat-sysstat.h b/nfsiostat-sysstat.h
deleted file mode 100644 (file)
index 129b6be..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * nfsiostat-sysstat: Report NFS I/O statistics
- * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved
- * Written by Ivana Varekova <varekova@redhat.com>
- */
-
-#ifndef _NFSIOSTAT_SYSSTAT_H
-#define _NFSIOSTAT_SYSSTAT_H
-
-#include "common.h"
-
-#define NFSMOUNTSTATS  "/proc/self/mountstats"
-
-/* I_: iostat - D_: Display - F_: Flag */
-#define I_D_TIMESTAMP          0x001
-#define I_D_KILOBYTES          0x002
-#define I_D_MEGABYTES          0x004
-#define I_D_ISO                        0x008
-#define I_D_HUMAN_READ         0x010
-#define I_D_DEBUG              0x020
-
-#define DISPLAY_TIMESTAMP(m)   (((m) & I_D_TIMESTAMP)     == I_D_TIMESTAMP)
-#define DISPLAY_KILOBYTES(m)   (((m) & I_D_KILOBYTES)     == I_D_KILOBYTES)
-#define DISPLAY_MEGABYTES(m)   (((m) & I_D_MEGABYTES)     == I_D_MEGABYTES)
-#define DISPLAY_ISO(m)         (((m) & I_D_ISO)           == I_D_ISO)
-#define DISPLAY_HUMAN_READ(m)  (((m) & I_D_HUMAN_READ)    == I_D_HUMAN_READ)
-#define DISPLAY_DEBUG(m)       (((m) & I_D_DEBUG)         == I_D_DEBUG)
-
-/* Environment variable */
-#define ENV_POSIXLY_CORRECT    "POSIXLY_CORRECT"
-
-/* Preallocation constats */
-#define NR_NFS_PREALLOC        2
-
-struct io_nfs_stats {
-       unsigned long long rd_normal_bytes      __attribute__ ((aligned (8)));
-       unsigned long long wr_normal_bytes      __attribute__ ((packed));
-       unsigned long long rd_direct_bytes      __attribute__ ((packed));
-       unsigned long long wr_direct_bytes      __attribute__ ((packed));
-       unsigned long long rd_server_bytes      __attribute__ ((packed));
-       unsigned long long wr_server_bytes      __attribute__ ((packed));
-       unsigned long rpc_sends                 __attribute__ ((packed));
-       unsigned long nfs_rops                  __attribute__ ((packed));
-       unsigned long nfs_wops                  __attribute__ ((packed));
-};
-
-#define IO_NFS_STATS_SIZE      (sizeof(struct io_nfs_stats))
-
-struct io_hdr_stats {
-       unsigned int active             __attribute__ ((aligned (4)));
-       unsigned int used               __attribute__ ((packed));
-       char name[MAX_NAME_LEN];
-};
-
-#define IO_HDR_STATS_SIZE      (sizeof(struct io_hdr_stats))
-
-#endif  /* _NFSIOSTAT_SYSSTAT_H */