common/scsi_debug: use udevadm settle instead of sleeping
authorLuis Chamberlain <mcgrof@kernel.org>
Tue, 27 Jul 2021 20:10:43 +0000 (13:10 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 1 Aug 2021 13:28:08 +0000 (21:28 +0800)
The variable UDEV_SETTLE_PROG is already defined and used for
lvm to either use `udevadm settle` in case it is available, and
if not, use 'sleep 1' otherwise (ancient distros or CONFIG_NET
is missing).

Use it on scsi_debug to replace the sleep calls sprinkled in
place after module removal. The correct thing to do is to
just use udevadm settle when available, and only fall back to
calling sleep when udevadm is not available or CONFIG_NET
is disabled.

Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/scsi_debug

index d9aa0bd..e798846 100644 (file)
@@ -36,7 +36,7 @@ _get_scsi_debug_dev()
        echo "scsi_debug options $opts" >> $seqres.full
        modprobe scsi_debug $opts
        [ $? -eq 0 ] || _fail "scsi_debug modprobe failed"
-       sleep 1
+       $UDEV_SETTLE_PROG
        device=`grep -wl scsi_debug /sys/block/sd*/device/model | awk -F / '{print $4}'`
        echo "/dev/$device"
 }
@@ -50,7 +50,7 @@ _put_scsi_debug_dev()
        # modprobe is only quiet when the module is not found, not when the
        # module is in use.
        while [ $n -ge 0 ] && ! modprobe -nr scsi_debug >/dev/null 2>&1; do
-               sleep 1
+               $UDEV_SETTLE_PROG
                n=$((n-1))
        done
        rmmod scsi_debug || _fail "Could not remove scsi_debug module"