summaryrefslogtreecommitdiffstats
path: root/client/engine/Cache.lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/engine/Cache.lib')
-rwxr-xr-xclient/engine/Cache.lib29
1 files changed, 24 insertions, 5 deletions
diff --git a/client/engine/Cache.lib b/client/engine/Cache.lib
index 626cab6f..e68dedbe 100755
--- a/client/engine/Cache.lib
+++ b/client/engine/Cache.lib
@@ -31,6 +31,9 @@
#@version 1.0.5 - Posibilidad de crear la cache en cualquier disco duro
#@author Universidad de Huelva
#@date 2012/09/18
+#@version 1.0.6b - Al crear las particiones ordenamos los dispositivos en el fichero auxiliar.
+#@author Irina Gomez, ETSII Universidad de Sevilla
+#@date 2016/12/19
#*/ ##
function ogCreateCache ()
{
@@ -100,16 +103,27 @@ case "$(ogGetPartitionTableType $NDSK)" in
[ -n "$(ogFindCache)" ] && ogDeleteCache
# Capturamos el codigo de particion GPT para cache
ID=$(ogTypeToId CACHE GPT)
- sgdisk $DISK -n$PART:$START:$END -c$PART:CACHE -t$PART:$ID 2>/dev/null && partprobe
+ sgdisk $DISK -n$PART:$START:$END -c$PART:CACHE -t$PART:$ID 2>/dev/null
;;
MSDOS)
# Si la tabla de particiones no es valida, volver a generarla.
[ $(parted -s $DISK print >/dev/null) ] || fdisk $DISK <<< "w"
# Definir particiones y notificar al kernel.
ID=$(ogTypeToId CACHE MSDOS)
- sfdisk -f $DISK -uS -N$PART <<<"$START,$SIZE,$ID" 2>/dev/null && partprobe
+ local TMPFILE=/tmp/sfdisk$$
+ trap "rm -f $TMPFILE" 1 2 3 9 15
+ sfdisk --dump $DISK | grep -v $DISK$PART > $TMPFILE
+ echo "$DISK$PART : start= $START, size= $SIZE, Id=$ID" >> $TMPFILE
+ # Ordenamos las lineas de los dispositivos
+ UNIT=$(grep unit $TMPFILE)
+ grep ^/dev $TMPFILE|sort -o $TMPFILE
+ sed -i "1i $UNIT\n" $TMPFILE
+ sfdisk --no-reread $DISK < $TMPFILE
+ rm -f $TMPFILE
;;
esac
+#Actualiza la tabla de particiones en el kernel.
+ogUpdatePartitionTable $NDISK
}
@@ -125,6 +139,9 @@ esac
#@version 1.0.4 - Soporte para discos GPT.
#@author Universidad de Huelva
#@date 2012/03/13
+#@version 1.0.6b - llamada correcta a ogGetPartitionTableType y ogUpdatePartitionTable
+#@author Antonio Doblas Universidad de Málaga
+#@date 2016/11/16
#*/ ##
function ogDeleteCache ()
{
@@ -142,21 +159,23 @@ DISK=$(ogDiskToDev $NDISK)
# Desmontar todos los sistemas de archivos del disco.
ogUnmountAll $NDISK 2>/dev/null
-case "$(ogGetPartitionTableType $1)" in
+case "$(ogGetPartitionTableType $NDISK)" 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
- sgdisk $DISK -d$NPART 2>/dev/null && partprobe
+ sgdisk $DISK -d$NPART 2>/dev/null
;;
MSDOS)
# Si la tabla de particiones no es valida, volver a generarla.
[ $(parted -s $DISK print >/dev/null) ] || fdisk $DISK <<< "w"
# Eliminar (poner a 0) la partición de caché.
- sfdisk -f $DISK -N$NPART <<<"0,0,0" 2>/dev/null && partprobe
+ sfdisk -f $DISK -N$NPART <<<"0,0,0" 2>/dev/null
;;
esac
# Borrar etiqueta de la caché.
rm -f /dev/disk/by-label/CACHE
+#Actualiza la tabla de particiones en el kernel.
+ogUpdatePartitionTable $NDISK
}