+ iso_device=$(dirname "${iso_device}")
+ if [ -b "${iso_device}" ]; then
+ # Proper device, we're done.
+ break
+ else
+ # Otherwise, it *could* be a proper device
+ # that just hasn't been started yet - think
+ # lvm or RAID.
+ case "${iso_device}" in
+ '/dev/mapper/'*|'/dev/md/'*)
+ # We're looking for paths like
+ # /dev/{mapper,md}/foo here.
+ if printf '%s\n' "${iso_device}" | \
+ grep -Eqs '^/dev/(mapper|md)/[^/]+$'; then
+ # Okay, looks like a device we'll
+ # have to start later on, done here.
+ break
+ fi
+ ;;
+ '/dev/md'*)
+ # This is different from the path above.
+ # Here, we're looking for something like
+ # /dev/md0, /dev/md126 and the like.
+ if printf '%s\n' "${iso_device}" | \
+ grep -Eqs '^/dev/md[[:digit:]]+$'; then
+ # Syntax matches, keep as device
+ # name for later when RAIDs were
+ # started.
+ break
+ fi
+ ;;
+ esac
+ fi
+ i="$(($i - 1))"
+ done