summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xclient/engine/Cache.lib14
-rwxr-xr-xclient/engine/Disk.lib2
2 files changed, 9 insertions, 7 deletions
diff --git a/client/engine/Cache.lib b/client/engine/Cache.lib
index 64196620..a63baa12 100755
--- a/client/engine/Cache.lib
+++ b/client/engine/Cache.lib
@@ -31,7 +31,7 @@
function ogCreateCache ()
{
# Variables locales.
-local DISK PART START END ENDPREVPART SIZE MINSIZE MAXSIZE ID
+local FINDCACHE NDSK PART DISK START END ENDPREVPART SIZE MINSIZE MAXSIZE ID
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_partsize" "$FUNCNAME 10000000"
@@ -40,13 +40,15 @@ fi
# Error si no se recibe 1 parámetro.
[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-DISK=$(ogDiskToDev 1) || return $?
-PART="4"
-END=$(ogGetLastSector $1) # Sector final del disco.
+FINDCACHE="1 4" # Partición de caché (ndisco npart).
+NDSK=${FINDCACHE#* }
+PART=${FINDCACHE% *}
+DISK=$(ogDiskToDev $NDSK) || return $?
+END=$(ogGetLastSector $NDSK) # Sector final del disco.
SIZE=$(echo $1|awk '{print $0*2}') # En sectores de 512 B.
START=$[END-SIZE+1]
ENDPREVPART=$(ogGetLastSector $[PART-1])
-# Error si tamaño no está entre límites permitidos o si se solapa con la partición 3.
+# Error si tamaño no está entre límites permitidos o si se solapa con la partición anterior.
MINSIZE=100000 # Error de formateo si tamaño < 50 MB.
MAXSIZE=$[END/2] # No permitir tamaño > mitad del disco.
if [ $SIZE -lt $MINSIZE -o $SIZE -gt $MAXSIZE -o $START -le $ENDPREVPART ]; then
@@ -58,7 +60,7 @@ ogUnmountAll 1 2>/dev/null
# Definir particiones y notificar al kernel.
# En el caso de ser disco GPT, de momento se borra la particion y se vuelve a crear por
# lo que se pierden los datos.
-case "$(ogGetPartitionTableType $1)" in
+case "$(ogGetPartitionTableType $NDSK)" in
GPT)
# Si la tabla de particiones no es valida, volver a generarla.
[ ! $(sgdisk -p $DISK 2>&1 >/dev/null) ] || echo -e "2\nw\nY\n" | gdisk $DISK
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib
index c89e3b3d..66dc0a73 100755
--- a/client/engine/Disk.lib
+++ b/client/engine/Disk.lib
@@ -678,7 +678,7 @@ case "$PTTYPE" in
CYLS=$(sfdisk -g $DISK | cut -f2 -d" ")
LASTSECTOR=$[SECTORS/CYLS*CYLS-1]
else
- LASTSECTOR=$(sfdisk -uS -l $DISK | \
+ LASTSECTOR=$(sfdisk -uS -l $DISK 2>/dev/null | \
awk -v P="$PART" '{if ($1==P) {if ($2=="*") print $4; else print $3} }')
fi
;;