diff options
author | Rob N <[email protected]> | 2023-12-06 06:53:14 +1100 |
---|---|---|
committer | GitHub <[email protected]> | 2023-12-05 11:53:14 -0800 |
commit | 5f2700eee5428b9ca4d4689c6985e751b733cbc6 (patch) | |
tree | e52bbeb160564954895cab76c82fc2dccda0b419 /cmd/zpool | |
parent | c7b6119268b87ba16249550a64d28594185595fb (diff) |
zpool: flush output before sleeping
Several zpool commands (status, list, iostat) have modes that present
some information, sleep a while, present the current state, sleep, etc.
Some of those had ways to invoke them that when piped would appear to do
nothing for a while, because non-terminals are block-buffered, not
line-buffered, by default. Fix this by forcing a flush before sleeping.
In particular, all of these buffered:
- zpool status <pool> <interval>
- zpool iostat -y<m> <pool> <interval>
- zpool list <pool> <interval>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Rob Norris <[email protected]>
Closes #15593
Diffstat (limited to 'cmd/zpool')
-rw-r--r-- | cmd/zpool/zpool_main.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index 9dd1d2109..c143d6370 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -5950,6 +5950,7 @@ zpool_do_iostat(int argc, char **argv) print_iostat_header(&cb); if (skip) { + (void) fflush(stdout); (void) fsleep(interval); continue; } @@ -5980,18 +5981,13 @@ zpool_do_iostat(int argc, char **argv) } - /* - * Flush the output so that redirection to a file isn't buffered - * indefinitely. - */ - (void) fflush(stdout); - if (interval == 0) break; if (count != 0 && --count == 0) break; + (void) fflush(stdout); (void) fsleep(interval); } @@ -6514,6 +6510,8 @@ zpool_do_list(int argc, char **argv) break; pool_list_free(list); + + (void) fflush(stdout); (void) fsleep(interval); } @@ -9094,6 +9092,7 @@ zpool_do_status(int argc, char **argv) if (count != 0 && --count == 0) break; + (void) fflush(stdout); (void) fsleep(interval); } |