From 934deeff2dd2eb7902bea17ba81e62ab8b70a195 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 30 Jul 2020 10:02:16 +0200 Subject: [PATCH] fix #2904: zpool status: parse vdevs with state but without statistics some vdevs (e.g. spares) have a 'state' (e.g. AVAIL), but not statistics like READ/WRITE/etc. Signed-off-by: Dominik Csapak --- src/tools/disks/zpool_status.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/tools/disks/zpool_status.rs b/src/tools/disks/zpool_status.rs index 8971d905..41b8a39c 100644 --- a/src/tools/disks/zpool_status.rs +++ b/src/tools/disks/zpool_status.rs @@ -67,6 +67,19 @@ fn parse_zpool_status_vdev(i: &str) -> IResult<&str, ZFSPoolVDevState> { } let (i, state) = preceded(multispace1, notspace1)(i)?; + if let Ok((n, _)) = preceded(multispace0, line_ending)(i) { // spares + let vdev = ZFSPoolVDevState { + name: vdev_name.to_string(), + lvl: indent_level, + state: Some(state.to_string()), + read: None, + write: None, + cksum: None, + msg: None, + }; + return Ok((n, vdev)); + } + let (i, read) = preceded(multispace1, parse_u64)(i)?; let (i, write) = preceded(multispace1, parse_u64)(i)?; let (i, cksum) = preceded(multispace1, parse_u64)(i)?;