summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/btrfs-device.asciidoc8
-rw-r--r--cmds-device.c14
2 files changed, 12 insertions, 10 deletions
diff --git a/Documentation/btrfs-device.asciidoc b/Documentation/btrfs-device.asciidoc
index 1e3b3a39..58dc9b00 100644
--- a/Documentation/btrfs-device.asciidoc
+++ b/Documentation/btrfs-device.asciidoc
@@ -98,7 +98,7 @@ remain as such. Reloading the kernel module will drop this information. There's
an alternative way of mounting multiple-device filesystem without the need for
prior scanning. See the mount option 'device'.
-*stats* [-zs] <path>|<device>::
+*stats* [options] <path>|<device>::
Read and print the device IO error statistics for all devices of the given
filesystem identified by <path> or for a single <device>. The filesystem must
be mounted. See section *DEVICE STATS* for more information about the reported
@@ -109,8 +109,10 @@ statistics and the meaning.
-z|--reset::::
Print the stats and reset the values to zero afterwards.
--s::::
-Set bit 6 of the return-code if any error statistics are non-zero.
+-c|--check::::
+Check if the stats are all zeros and return 0 it it is so. Set bit 6 of the
+return code if any of the statistics is no-zero. The error values is 65 if
+reading stats from at least one device failed, otherwise it's 64.
*usage* [options] <path> [<path>...]::
Show detailed information about internal allocations in devices.
diff --git a/cmds-device.c b/cmds-device.c
index 3e053d9e..de62cd42 100644
--- a/cmds-device.c
+++ b/cmds-device.c
@@ -377,8 +377,8 @@ static const char * const cmd_device_stats_usage[] = {
"Show device IO error statistics for all devices of the given filesystem",
"identified by PATH or DEVICE. The filesystem must be mounted.",
"",
+ "-c|--check return non-zero if any stat counter is not zero",
"-z|--reset show current stats and reset values to zero",
- "-s return non-zero if any stat counter is not zero",
NULL
};
@@ -391,7 +391,7 @@ static int cmd_device_stats(int argc, char **argv)
int fdmnt;
int i;
int err = 0;
- int status = 0;
+ int check = 0;
__u64 flags = 0;
DIR *dirstream = NULL;
@@ -402,17 +402,17 @@ static int cmd_device_stats(int argc, char **argv)
{NULL, 0, NULL, 0}
};
- c = getopt_long(argc, argv, "zs", long_options, NULL);
+ c = getopt_long(argc, argv, "cz", long_options, NULL);
if (c < 0)
break;
switch (c) {
+ case 'c':
+ check = 1;
+ break;
case 'z':
flags = BTRFS_DEV_STATS_RESET;
break;
- case 's':
- status = 1;
- break;
case '?':
default:
usage(cmd_device_stats_usage);
@@ -494,7 +494,7 @@ static int cmd_device_stats(int argc, char **argv)
dev_stats[j].name,
(unsigned long long)
args.values[dev_stats[j].num]);
- if ((status == 1)
+ if ((check == 1)
&& (args.values[dev_stats[j].num] > 0))
err |= 64;
}