summaryrefslogtreecommitdiffstats
path: root/client/engine/Cache.lib
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2010-06-02 11:50:27 +0000
committerramon <ramongomez@us.es>2010-06-02 11:50:27 +0000
commitf4b737dac76e096fb710e751ed53b3d5eaabd2ed (patch)
tree5375141cc3bdd8783b1a4fd7e5a3b80dcd73e1b5 /client/engine/Cache.lib
parentc1186cd2332925eee7e1685b155a996b4d8e6aa2 (diff)
Solución ticket:155 - función ogCreateCache define límite mínimo para la caché.
git-svn-id: https://opengnsys.es/svn/trunk@1008 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client/engine/Cache.lib')
-rwxr-xr-xclient/engine/Cache.lib19
1 files changed, 13 insertions, 6 deletions
diff --git a/client/engine/Cache.lib b/client/engine/Cache.lib
index d7ca6d87..d70f3300 100755
--- a/client/engine/Cache.lib
+++ b/client/engine/Cache.lib
@@ -4,7 +4,7 @@
#@brief Librería o clase Cache
#@class Cache
#@brief Funciones para gestión de la caché local de disco.
-#@version 0.91
+#@version 0.9.1
#@warning License: GNU GPLv3+
#*/
@@ -16,14 +16,19 @@
#@return (nada, por determinar)
#@exception OG_ERR_FORMAT formato incorrecto.
#@note Requisitos: sfdisk, parted, awk, sed
-#@version 0.91 - Definición de caché local.
+#$warning El tamaño de caché debe estar entre 50 MB y la mitad del disco.
+#$warning La caché no puede solaparse con las particiones de datos.
+#@version 0.9.1 - Definición de caché local.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2010/03/09
+#@version 0.9.2 - Corrección definición de límites.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2010/06/01
#*/ ##
function ogCreateCache ()
{
# Variables locales.
-local DISK PART SECTORS CYLS START END SIZE ENDPART3
+local DISK PART SECTORS CYLS START END SIZE MINSIZE MAXSIZE ENDPART3
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_partsize" "$FUNCNAME 10000000"
@@ -36,12 +41,14 @@ DISK=$(ogDiskToDev 1) || return $?
PART="4"
SECTORS=$(awk -v D=${DISK#/dev/} '{if ($4==D) {print $3*2}}' /proc/partitions)
CYLS=$(sfdisk -g $DISK | cut -f2 -d" ")
-END=$[SECTORS/CYLS*CYLS-1]
+END=$[SECTORS/CYLS*CYLS-1] # Sector final del disco
SIZE=$(echo $1|awk '{print $0*2}') # En sectores de 512 B.
START=$[END-SIZE+1]
ENDPART3=$(sfdisk -uS -l $DISK | awk -v P="${DISK}3" '{if ($1==P) print $3}')
-# Error si tamaño 0 o si mayor que la mitad del disco o si pisa la partición 3.
-if [ $SIZE -eq 0 -o $SIZE -ge $[END/2] -o $START -le $ENDPART3 ]; then
+# Error si tamaño no está entre límites permitidos o si se solapa con la partición 3.
+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 $ENDPART3 ]; then
ogRaiseError $OG_ERR_FORMAT "$1" || return $?
fi