From 9d701737d04f784caf4dd1f95d89415d4f82e4e5 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 10 Apr 2021 13:08:28 +0000 Subject: [PATCH] Improve device map detection logic --- scripts/armbian_rootenc_setup.sh | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/armbian_rootenc_setup.sh b/scripts/armbian_rootenc_setup.sh index 724e2aa..5aebf26 100755 --- a/scripts/armbian_rootenc_setup.sh +++ b/scripts/armbian_rootenc_setup.sh @@ -431,18 +431,21 @@ remove_build_dir() { } _get_device_maps() { - local dm_type=$1 - local varname="device_maps_${dm_type}" + local dm_type=$1 varname="device_maps_$1" dm_name ls mp eval "$varname=" - local data=$(lsblk --list --noheadings --output=KNAME,MOUNTPOINT | egrep '^dm-[0-9]') - while read kname mountpoint; do - [ "$dm_type" == 'unmounted' -a "$mountpoint" ] && continue - [ "$dm_type" == 'mounted_on_target' -a \ - "${mountpoint: -${#TARGET_ROOT}}" != "$TARGET_ROOT" ] && continue - eval "$varname+=/dev/$kname " - done <<-EOF - $data - EOF + for dm_name in $(dmsetup ls | awk '{print $1}'); do + [ $(lsblk --noheadings --nodeps -o fstype /dev/mapper/$dm_name) == 'ext4' ] || continue + ls=$(findmnt -n --source /dev/mapper/$dm_name | awk '{print $1}') + if [ "$ls" -a "$dm_type" == 'mounted_on_target' ]; then + for mp in $ls; do + if [ "${mp: -${#TARGET_ROOT}}" == "$TARGET_ROOT" ]; then + eval "$varname+=$dm_name " + fi + done + elif [ -z "$ls" -a "$dm_type" == 'unmounted' ]; then + eval "$varname+=$dm_name " + fi + done tmsg "$varname=[${!varname}]" }