#!/sbin/openrc-run

description="Add partition devmappings"

depend()
{
        before root
}

start()
{
        partitions="$(grep -v "loop\|ram" < /proc/diskstats |\
                sed 's/\(\s\+[0-9]\+\)\+\s\+//;s/ .*//;s/^/\/dev\//')"
        echo "$partitions" | while read -r partition; do
                case "$(kpartx -l "$partition" 2>/dev/null | wc -l)" in
                        2)
                                einfo "Mount subpartitions of $partition"
                                # On some devices (e. g. htc vision) this kpartx command can fail
                                # with a non-zero exit code on some unrelated partitions, which would
                                # normally cause the loop to abort. But we still need to find the
                                # root partition, hence the "|| continue"
                                kpartx -afs "$partition" || continue
                                # Ensure that this was the *correct* subpartition
                                # Some devices have mmc partitions that appear to have
                                # subpartitions, but aren't our subpartition.
                                if blkid | grep -q "pmOS_boot"; then
                                        break
                                fi
                                kpartx -d "$partition"
                                continue
                                ;;
                        *)
                                continue
                                ;;
                esac
        done
}
