mirror of
https://github.com/AuxXxilium/arc-c.git
synced 2025-02-20 08:27:22 +07:00
storage: fix
Signed-off-by: AuxXxilium <info@auxxxilium.tech>
This commit is contained in:
parent
0ead7065f6
commit
e2ee78e60f
@ -359,7 +359,6 @@ function arcsettings() {
|
||||
fi
|
||||
# Get Portmap for Loader
|
||||
getmap
|
||||
getportmap
|
||||
# Check Warnings
|
||||
if [ ${WARNON} -eq 1 ]; then
|
||||
dialog --backtitle "$(backtitle)" --title "Arc Warning" \
|
||||
@ -1711,7 +1710,6 @@ function storageMenu() {
|
||||
DT="$(readModelKey "${MODEL}" "dt")"
|
||||
# Get Portmap for Loader
|
||||
getmap
|
||||
getportmap
|
||||
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
|
||||
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
|
||||
}
|
||||
|
@ -1,70 +1,67 @@
|
||||
# Get PortMap for Loader
|
||||
function getmap() {
|
||||
if [ ! "${DT}" = "true" ]; then
|
||||
if [ ! "${DT}" = "true" ] && [ ${SATACONTROLLER} -gt 0 ]; then
|
||||
# Clean old files
|
||||
[ -f "${TMP_PATH}/drivesmax" ] && rm -f "${TMP_PATH}/drivesmax"
|
||||
touch "${TMP_PATH}/drivesmax"
|
||||
[ -f "${TMP_PATH}/drivescon" ] && rm -f "${TMP_PATH}/drivescon"
|
||||
touch "${TMP_PATH}/drivescon"
|
||||
[ -f "${TMP_PATH}/ports" ] && rm -f "${TMP_PATH}/ports"
|
||||
touch "${TMP_PATH}ports"
|
||||
[ -f "${TMP_PATH}/remap" ] && rm -f "${TMP_PATH}/remap"
|
||||
touch "${TMP_PATH}/remap"
|
||||
# Sata Disks
|
||||
SATADRIVES=0
|
||||
if [ ${SATACONTROLLER} -gt 0 ]; then
|
||||
# Clean old files
|
||||
[ -f "${TMP_PATH}/drivesmax" ] && rm -f "${TMP_PATH}/drivesmax"
|
||||
touch "${TMP_PATH}/drivesmax"
|
||||
[ -f "${TMP_PATH}/drivescon" ] && rm -f "${TMP_PATH}/drivescon"
|
||||
touch "${TMP_PATH}/drivescon"
|
||||
[ -f "${TMP_PATH}/ports" ] && rm -f "${TMP_PATH}/ports"
|
||||
touch "${TMP_PATH}ports"
|
||||
[ -f "${TMP_PATH}/remap" ] && rm -f "${TMP_PATH}/remap"
|
||||
touch "${TMP_PATH}/remap"
|
||||
# Do the work
|
||||
let DISKIDXMAPIDX=0
|
||||
DISKIDXMAP=""
|
||||
let DISKIDXMAPIDXMAX=0
|
||||
DISKIDXMAPMAX=""
|
||||
for PCI in $(lspci -d ::106 | awk '{print $1}'); do
|
||||
NUMPORTS=0
|
||||
CONPORTS=0
|
||||
unset HOSTPORTS
|
||||
declare -A HOSTPORTS
|
||||
while read -r LINE; do
|
||||
ATAPORT="$(echo ${LINE} | grep -o 'ata[0-9]*')"
|
||||
PORT=$(echo ${ATAPORT} | sed 's/ata//')
|
||||
HOSTPORTS[${PORT}]=$(echo ${LINE} | grep -o 'host[0-9]*$')
|
||||
done < <(ls -l /sys/class/scsi_host | grep -F "${PCI}")
|
||||
while read -r PORT; do
|
||||
ls -l /sys/block | grep -F -q "${PCI}/ata${PORT}" && ATTACH=1 || ATTACH=0
|
||||
PCMD=$(cat /sys/class/scsi_host/${HOSTPORTS[${PORT}]}/ahci_port_cmd)
|
||||
[ ${PCMD} = 0 ] && DUMMY=1 || DUMMY=0
|
||||
[ ${ATTACH} = 1 ] && CONPORTS=$((${CONPORTS} + 1)) && echo "$((${PORT} - 1))" >>"${TMP_PATH}/ports"
|
||||
[ ${DUMMY} = 1 ] # Do nothing for now
|
||||
NUMPORTS=$((${NUMPORTS} + 1))
|
||||
done < <(echo ${!HOSTPORTS[@]} | tr ' ' '\n' | sort -n)
|
||||
[ ${NUMPORTS} -gt 8 ] && NUMPORTS=8
|
||||
[ ${CONPORTS} -gt 8 ] && CONPORTS=8
|
||||
echo -n "${NUMPORTS}" >>"${TMP_PATH}/drivesmax"
|
||||
echo -n "${CONPORTS}" >>"${TMP_PATH}/drivescon"
|
||||
DISKIDXMAP=$DISKIDXMAP$(printf "%02x" $DISKIDXMAPIDX)
|
||||
let DISKIDXMAPIDX=$DISKIDXMAPIDX+$CONPORTS
|
||||
DISKIDXMAPMAX=$DISKIDXMAPMAX$(printf "%02x" $DISKIDXMAPIDXMAX)
|
||||
let DISKIDXMAPIDXMAX=$DISKIDXMAPIDXMAX+$NUMPORTS
|
||||
SATADRIVES=$((${SATADRIVES} + ${CONPORTS}))
|
||||
done
|
||||
SATAPORTMAPMAX="$(<"${TMP_PATH}/drivesmax")"
|
||||
SATAPORTMAP="$(<"${TMP_PATH}/drivescon")"
|
||||
LASTDRIVE=0
|
||||
# Check for VM
|
||||
let DISKIDXMAPIDX=0
|
||||
DISKIDXMAP=""
|
||||
let DISKIDXMAPIDXMAX=0
|
||||
DISKIDXMAPMAX=""
|
||||
for PCI in $(lspci -d ::106 | awk '{print $1}'); do
|
||||
NUMPORTS=0
|
||||
CONPORTS=0
|
||||
unset HOSTPORTS
|
||||
declare -A HOSTPORTS
|
||||
while read -r LINE; do
|
||||
if [[ "${BUS}" != "usb" && ${LINE} -eq 0 && "${LOADER_DISK}" = "/dev/sda" ]]; then
|
||||
MAXDISKS="$(readModelKey "${MODEL}" "disks")"
|
||||
if [ ${MAXDISKS} -lt ${SATADRIVES} ]; then
|
||||
MAXDISKS=${SATADRIVES}
|
||||
fi
|
||||
echo -n "${LINE}>${MAXDISKS}:" >>"${TMP_PATH}/remap"
|
||||
elif [ ! ${LINE} = ${LASTDRIVE} ]; then
|
||||
echo -n "${LINE}>${LASTDRIVE}:" >>"${TMP_PATH}/remap"
|
||||
LASTDRIVE=$((${LASTDRIVE} + 1))
|
||||
elif [ ${LINE} = ${LASTDRIVE} ]; then
|
||||
LASTDRIVE=$((${LINE} + 1))
|
||||
ATAPORT="$(echo ${LINE} | grep -o 'ata[0-9]*')"
|
||||
PORT=$(echo ${ATAPORT} | sed 's/ata//')
|
||||
HOSTPORTS[${PORT}]=$(echo ${LINE} | grep -o 'host[0-9]*$')
|
||||
done < <(ls -l /sys/class/scsi_host | grep -F "${PCI}")
|
||||
while read -r PORT; do
|
||||
ls -l /sys/block | grep -F -q "${PCI}/ata${PORT}" && ATTACH=1 || ATTACH=0
|
||||
PCMD=$(cat /sys/class/scsi_host/${HOSTPORTS[${PORT}]}/ahci_port_cmd)
|
||||
[ ${PCMD} = 0 ] && DUMMY=1 || DUMMY=0
|
||||
[ ${ATTACH} = 1 ] && CONPORTS=$((${CONPORTS} + 1)) && echo "$((${PORT} - 1))" >>"${TMP_PATH}/ports"
|
||||
[ ${DUMMY} = 1 ] # Do nothing for now
|
||||
NUMPORTS=$((${NUMPORTS} + 1))
|
||||
done < <(echo ${!HOSTPORTS[@]} | tr ' ' '\n' | sort -n)
|
||||
[ ${NUMPORTS} -gt 8 ] && NUMPORTS=8
|
||||
[ ${CONPORTS} -gt 8 ] && CONPORTS=8
|
||||
echo -n "${NUMPORTS}" >>"${TMP_PATH}/drivesmax"
|
||||
echo -n "${CONPORTS}" >>"${TMP_PATH}/drivescon"
|
||||
DISKIDXMAP=$DISKIDXMAP$(printf "%02x" $DISKIDXMAPIDX)
|
||||
let DISKIDXMAPIDX=$DISKIDXMAPIDX+$CONPORTS
|
||||
DISKIDXMAPMAX=$DISKIDXMAPMAX$(printf "%02x" $DISKIDXMAPIDXMAX)
|
||||
let DISKIDXMAPIDXMAX=$DISKIDXMAPIDXMAX+$NUMPORTS
|
||||
SATADRIVES=$((${SATADRIVES} + ${CONPORTS}))
|
||||
done
|
||||
SATAPORTMAPMAX="$(<"${TMP_PATH}/drivesmax")"
|
||||
SATAPORTMAP="$(<"${TMP_PATH}/drivescon")"
|
||||
LASTDRIVE=0
|
||||
# Check for VM
|
||||
while read -r LINE; do
|
||||
if [[ "${BUS}" != "usb" && ${LINE} -eq 0 && "${LOADER_DISK}" = "/dev/sda" ]]; then
|
||||
MAXDISKS="$(readModelKey "${MODEL}" "disks")"
|
||||
if [ ${MAXDISKS} -lt ${SATADRIVES} ]; then
|
||||
MAXDISKS=${SATADRIVES}
|
||||
fi
|
||||
done < <(cat "${TMP_PATH}/ports")
|
||||
fi
|
||||
echo -n "${LINE}>${MAXDISKS}:" >>"${TMP_PATH}/remap"
|
||||
elif [ ! ${LINE} = ${LASTDRIVE} ]; then
|
||||
echo -n "${LINE}>${LASTDRIVE}:" >>"${TMP_PATH}/remap"
|
||||
LASTDRIVE=$((${LASTDRIVE} + 1))
|
||||
elif [ ${LINE} = ${LASTDRIVE} ]; then
|
||||
LASTDRIVE=$((${LINE} + 1))
|
||||
fi
|
||||
done < <(cat "${TMP_PATH}/ports")
|
||||
# SAS Disks
|
||||
SASDRIVES=0
|
||||
if [ $(lspci -d ::107 | wc -l) -gt 0 ]; then
|
||||
@ -131,16 +128,12 @@ function getmap() {
|
||||
dialog --backtitle "$(backtitle)" --colors --title "Arc Disks" \
|
||||
--msgbox "${TEXT}" 0 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
function getportmap() {
|
||||
# Compute PortMap Options
|
||||
if [ ${SATACONTROLLER} -gt 0 ]; then
|
||||
# Compute PortMap Options
|
||||
SATAREMAP="$(awk '{print $1}' "${TMP_PATH}/remap" | sed 's/.$//')"
|
||||
# Show recommended Option to user
|
||||
if [[ -n "${SATAREMAP}" && ( ${SASCONTROLLER} -eq 0 && ${SCSICONTROLLER} -eq 0 )]]; then
|
||||
if [[ -n "${SATAREMAP}" && ${SASCONTROLLER} -eq 0 && ${SCSICONTROLLER} -eq 0 ]]; then
|
||||
REMAP3="*"
|
||||
elif [[ -n "${SATAREMAP}" && ( ${SASCONTROLLER} -gt 0 || ${SCSICONTROLLER} -gt 0 ) && "${MACHINE}" = "NATIVE" ]]; then
|
||||
elif [ -n "${SATAREMAP}" ] && [[ ${SASCONTROLLER} -gt 0 || ${SCSICONTROLLER} -gt 0 ]] && [ "${MACHINE}" = "NATIVE" ]; then
|
||||
REMAP2="*"
|
||||
else
|
||||
REMAP1="*"
|
||||
|
Loading…
Reference in New Issue
Block a user