-+/dev/mapper/*-*)
-+ # change "--" to / (as "/" is impossible in LV name)
-+ local dev=$(awk -vdev="${GRUB_DEVICE#/dev/mapper/}" 'BEGIN{gsub(/--/, "/", dev); print dev}')
-+ local VG=$(awk -vdev="$dev" 'BEGIN{split(dev, v, "-"); gsub("/", "-", v[1]); print v[1]}')
-+ local LV=$(awk -vdev="$dev" 'BEGIN{split(dev, v, "-"); gsub("/", "-", v[2]); print v[2]}')
-+ GRUB_DEVICE=/dev/$VG/$LV
-+;;
++ /dev/mapper/*-*)
++ DM_REAL_DEVICE="$(readlink -f "$GRUB_DEVICE")"
++ DM_UUID="$(cat /sys/block/${DM_REAL_DEVICE#/dev/}/dm/uuid)"
++ case "$DM_UUID" in
++ LVM-*)
++ # change "--" to / (as "/" is impossible in LV name)
++ local dev=$(awk -vdev="${GRUB_DEVICE#/dev/mapper/}" 'BEGIN{gsub(/--/, "/", dev); print dev}')
++ local VG=$(awk -vdev="$dev" 'BEGIN{split(dev, v, "-"); gsub("/", "-", v[1]); print v[1]}')
++ local LV=$(awk -vdev="$dev" 'BEGIN{split(dev, v, "-"); gsub("/", "-", v[2]); print v[2]}')
++ GRUB_DEVICE=/dev/$VG/$LV
++ ;;
++ esac
++ ;;