From 25096e11800a545ff80764e51bd86dcc2a03a4bd Mon Sep 17 00:00:00 2001 From: Serapheim Dimitropoulos Date: Tue, 11 Oct 2022 12:12:04 -0700 Subject: [PATCH] zvol_wait logic may terminate prematurely Setups that have a lot of zvols may see zvol_wait terminate prematurely even though the script is still making progress. For example, we have a customer that called zvol_wait for ~7100 zvols and by the last iteration of that script it was still waiting on ~2900. Similarly another one called zvol_wait for 2200 and by the time the script terminated there were only 50 left. This patch adjusts the logic to stay within the outer loop of the script if we are making any progress whatsoever. Reviewed-by: George Wilson Reviewed-by: Pavel Zakharov Reviewed-by: Don Brady Signed-off-by: Serapheim Dimitropoulos Closes #13998 --- cmd/zvol_wait/zvol_wait | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmd/zvol_wait/zvol_wait b/cmd/zvol_wait/zvol_wait index f1fa42e27d..0b2a8a3e60 100755 --- a/cmd/zvol_wait/zvol_wait +++ b/cmd/zvol_wait/zvol_wait @@ -109,6 +109,13 @@ while [ "$outer_loop" -lt 20 ]; do exit 0 fi fi + + # + # zvol_count made some progress - let's stay in this loop. + # + if [ "$old_zvols_count" -gt "$zvols_count" ]; then + outer_loop=$((outer_loop - 1)) + fi done echo "Timed out waiting on zvol links"