+
+# helper function to get relevant /dev/disk/by-id/* entries,
+# based on GRUB's postinst script
+available_ids() {
+ local path ids
+
+ [ -d /dev/disk/by-id ] || return
+ ids="$(
+ for path in /dev/disk/by-id/*; do
+ [ -e "${path}" ] || continue
+ printf '%s %s\n' "${path}" "$(readlink -f "${path}")"
+ done | sort -k2 -s -u | cut -d' ' -f1
+ )"
+ echo "${ids}"
+}
+
+# helper function to report corresponding /dev/disk/by-id/ for a given device name,
+# based on GRUB's postinst script
+device_to_id() {
+ local id
+
+ for id in $(available_ids); do
+ if [ "$(readlink -f "${id}")" = "$(readlink -f "$1")" ]; then
+ echo "${id}"
+ return 0
+ fi
+ done
+
+ # Fall back to the plain device name if there's no by-id link for it.
+ if [ -e "$1" ]; then
+ echo "$1"
+ return 0
+ fi
+ return 1
+}
+