From e5646c5e372621be3b17a07c378512b502888925 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 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmd/zvol_wait b/cmd/zvol_wait index f1fa42e27..0b2a8a3e6 100755 --- a/cmd/zvol_wait +++ b/cmd/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"