#!/usr/bin/env bash

if [ "$(id -u)" -ne 0 ]; then    
    echo "Please run with sudo ..."
    exit 1
fi

oldpwd=$(pwd)
VPART=""

if dmsetup -h > /dev/null 2>&1; then
    VPART_MAJOR_MINOR=$(dmsetup table ventoy | head -n 1 | awk '{print $4}')    
    cd /sys/class/block/
    for t in *; do
        if grep -q "^${VPART_MAJOR_MINOR}$" $t/dev; then
            VPART=$t
            echo 0 $(cat /sys/class/block/$VPART/size) linear /dev/$VPART 0 | dmsetup create $VPART
            dmsetup mknodes "$VPART" > /dev/null 2>&1
            break
        fi
    done
    cd $oldpwd
    
    if [ -z "$VPART" ]; then
        echo "$VPART_MAJOR_MINOR not found"
        dmsetup ls; dmsetup info ventoy; dmsetup table ventoy
        exit 1
    else                                 
        if [ ! -b "/dev/mapper/$VPART" ]; then
            udevadm trigger --type=devices --action=add  > /dev/null 2>&1
            udevadm settle > /dev/null 2>&1
        fi
        echo "Create /dev/mapper/$VPART success"
    fi    
else
    echo "dmsetup program not avaliable"
    exit 1
fi
