summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorPavel Zakharov <[email protected]>2019-09-03 14:29:52 -0400
committerBrian Behlendorf <[email protected]>2019-09-03 11:29:52 -0700
commita91e4790a60a40467170080a39424f7976e63550 (patch)
tree4390bfc13ff9fe74b41397dc72dcd15993f714ff /cmd
parentebeb6f23bf7e8fe6732a05267ed1cab4c38d3b23 (diff)
zvol_wait script should ignore partially received zvols
Partially received zvols won't have links in /dev/zvol. Reviewed-by: Sebastien Roy <[email protected]> Reviewed-by: Paul Dagnelie <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Pavel Zakharov <[email protected]> Closes #9260
Diffstat (limited to 'cmd')
-rwxr-xr-xcmd/zvol_wait/zvol_wait23
1 files changed, 21 insertions, 2 deletions
diff --git a/cmd/zvol_wait/zvol_wait b/cmd/zvol_wait/zvol_wait
index d512be41b..e5df82dd3 100755
--- a/cmd/zvol_wait/zvol_wait
+++ b/cmd/zvol_wait/zvol_wait
@@ -25,11 +25,30 @@ filter_out_deleted_zvols() {
}
list_zvols() {
- zfs list -t volume -H -o name,volmode | while read -r zvol_line; do
+ zfs list -t volume -H -o name,volmode,receive_resume_token |
+ while read -r zvol_line; do
name=$(echo "$zvol_line" | awk '{print $1}')
volmode=$(echo "$zvol_line" | awk '{print $2}')
+ token=$(echo "$zvol_line" | awk '{print $3}')
+ #
# /dev links are not created for zvols with volmode = "none".
- [ "$volmode" = "none" ] || echo "$name"
+ #
+ [ "$volmode" = "none" ] && continue
+ #
+ # We also also ignore partially received zvols if it is
+ # not an incremental receive, as those won't even have a block
+ # device minor node created yet.
+ #
+ if [ "$token" != "-" ]; then
+ #
+ # Incremental receives create an invisible clone that
+ # is not automatically displayed by zfs list.
+ #
+ if ! zfs list "$name/%recv" >/dev/null 2>&1; then
+ continue
+ fi
+ fi
+ echo "$name"
done
}