fix potential boot disk detection bug on NVMe
This commit is contained in:
parent
762870e331
commit
cfd3dd4af6
@ -9,7 +9,7 @@ _getbootdisk()
|
||||
rootpart="${devpath##*/}"
|
||||
devpath="${devpath%%/$rootpart}"
|
||||
local rootdisk="${devpath##*/}"
|
||||
echo $rootdisk
|
||||
echo "$rootdisk"
|
||||
}
|
||||
|
||||
# > getpartofdisk sda 3
|
||||
@ -18,15 +18,16 @@ _getbootdisk()
|
||||
# mmcblk0p3
|
||||
_getpartofdisk()
|
||||
{
|
||||
local disk="$1"
|
||||
local part="$2"
|
||||
local dev="`cat /sys/block/$disk/dev`"
|
||||
[ -z "$dev" ] && return 1
|
||||
local major="${dev%%:*}"
|
||||
local minor="${dev##*:}"
|
||||
local devpath="`readlink /sys/dev/block/$major:$(($minor + $part))`"
|
||||
[ -z "$devpath" ] && return 1
|
||||
echo "${devpath##*/}"
|
||||
local disk="$1" offset="$2" part
|
||||
if [[ "$offset" = 0 ]]; then
|
||||
echo "$disk"
|
||||
else
|
||||
part="$disk"
|
||||
echo "$part" | grep -q '^.*\d$' && part="${part}p"
|
||||
part="${part}"$(( ${offset} ))
|
||||
echo "$part"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
_get_overlay_partition_default()
|
||||
|
||||
@ -156,6 +156,7 @@ export_bootdevice() {
|
||||
done < /tmp/.bootdisk
|
||||
export BOOTDEV_MAJOR=$MAJOR
|
||||
export BOOTDEV_MINOR=$MINOR
|
||||
export BOOTDEV_DEVNAME=$DEVNAME
|
||||
return 0
|
||||
fi
|
||||
|
||||
@ -219,6 +220,7 @@ export_bootdevice() {
|
||||
done < "$uevent"
|
||||
export BOOTDEV_MAJOR=$MAJOR
|
||||
export BOOTDEV_MINOR=$MINOR
|
||||
export BOOTDEV_DEVNAME=$DEVNAME
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
@ -227,18 +229,20 @@ export_bootdevice() {
|
||||
}
|
||||
|
||||
export_partdevice() {
|
||||
local var="$1" offset="$2"
|
||||
local uevent line MAJOR MINOR DEVNAME DEVTYPE
|
||||
|
||||
for uevent in /sys/class/block/*/uevent; do
|
||||
while read line; do
|
||||
export -n "$line"
|
||||
done < "$uevent"
|
||||
if [ $BOOTDEV_MAJOR = $MAJOR -a $(($BOOTDEV_MINOR + $offset)) = $MINOR -a -b "/dev/$DEVNAME" ]; then
|
||||
export "$var=$DEVNAME"
|
||||
local var="$1" offset="$2" part
|
||||
offset=$(( ${offset} ))
|
||||
if [[ "$offset" = 0 ]]; then
|
||||
export "$var=$BOOTDEV_DEVNAME"
|
||||
return 0
|
||||
else
|
||||
part="$BOOTDEV_DEVNAME"
|
||||
echo "$part" | grep -q '^.*\d$' && part="${part}p"
|
||||
part="${part}${offset}"
|
||||
if [ -b "/dev/$part" ]; then
|
||||
export "$var=$part"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user