summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2010-03-18 13:19:22 +0000
committerramon <ramongomez@us.es>2010-03-18 13:19:22 +0000
commit5a4f399e63c0c1f8c29d224e182a81953c0ce10c (patch)
tree2f6eaf79864c15e70574c6a80798a6f782cf0ecf /client
parente6c00374f445b8717a303e42157944002620130d (diff)
Corrección en script initCache; nueva función ogIsFormated en rama trunk.
git-svn-id: https://opengnsys.es/svn/trunk@815 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client')
-rwxr-xr-xclient/engine/Cache.lib16
-rwxr-xr-xclient/engine/FileSystem.lib45
-rwxr-xr-xclient/nfsexport/scripts/initCache3
3 files changed, 50 insertions, 14 deletions
diff --git a/client/engine/Cache.lib b/client/engine/Cache.lib
index 142c53dd..d7ca6d87 100755
--- a/client/engine/Cache.lib
+++ b/client/engine/Cache.lib
@@ -75,7 +75,7 @@ if [ "$*" == "help" ]; then
fi
# Error si no se encuentra partición de caché.
read NDISK NPART <<<"$(ogFindCache)"
-[ -n "$NDISK" -a -n "$NPART" ] || ogRaiseError $OG_ERR_PARTITION "CACHE" || return $?
+[ -n "$NDISK" -a -n "$NPART" ] || ogRaiseError $OG_ERR_PARTITION "$MSG_NOCACHE" || return $?
DISK=$(ogDiskToDev $NDISK)
# Desmontar todos los sistemas de archivos del disco.
@@ -146,7 +146,7 @@ if [ "$*" == "help" ]; then
fi
# Error si no hay definida partición de caché.
-DEV=$(ogFindCache) || ogRaiseError $OG_ERR_PARTITION "CACHE" || return $?
+DEV=$(ogFindCache) || ogRaiseError $OG_ERR_PARTITION "$MSG_NOCACHE" || return $?
DEV=$(ogDiskToDev $DEV) || return $?
# Formatear sistema de ficheros.
@@ -181,7 +181,7 @@ if [ "$*" == "help" ]; then
return
fi
# Error si no se encuentra partición de caché.
-PART=$(ogFindCache) || ogRaiseError $OG_ERR_PARTITION "CACHE" || return $?
+PART=$(ogFindCache) || ogRaiseError $OG_ERR_PARTITION "$MSG_NOCACHE" || return $?
# Devuelve tamaño de la partición de caché.
ogGetPartitionSize $PART
@@ -243,7 +243,7 @@ if [ "$*" == "help" ]; then
return
fi
-OGCAC=$(ogMountFs $(ogFindCache) 2>/dev/null) || ogRaiseError $OG_ERR_PARTITION "CACHE" || return $?
+OGCAC=$(ogMountFs $(ogFindCache) 2>/dev/null) || ogRaiseError $OG_ERR_PARTITION "$MSG_NOCACHE" || return $?
echo $OGCAC
export OGCAC
}
@@ -264,13 +264,17 @@ export OGCAC
#*/ ##
function ogUnmountCache ()
{
+# Variables locales.
+local CACHE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME"
return
fi
-unset OGCAC
-ogUnmountFs $(ogFindCache) 2>/dev/null || ogRaiseError $OG_ERR_PARTITION "CACHE"
+CACHE=$(ogFindCache) || ogRaiseError $OG_ERR_PARTITION "$MSG_NOCACHE"
+ogUnmountFs $CACHE
+# Borrar enlace simbólico de /mnt/ParticiónCache.
+rm -f $(ogDiskToDev $CACHE | sed 's/dev/mnt/')
}
diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib
index ab941d4a..7b29388f 100755
--- a/client/engine/FileSystem.lib
+++ b/client/engine/FileSystem.lib
@@ -350,6 +350,34 @@ echo $(mount | awk -v P=$PART '{if ($1==P) {print $3}}')
#/**
+# ogIsFormated int_ndisk int_npartition
+#@brief Comprueba si un sistema de archivos está formateado.
+#@param int_ndisk nº de orden del disco o volumen.
+#@param int_npartition nº de orden del sistema de archivos.
+#@return int_code Código de salida
+#@version 0.91 - Adaptación inicial para comprobar que existe caché.
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2010-03-18
+#*/ ##
+function ogIsFormated ()
+{
+# Variables locales
+local DISK
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "if $FUNCNAME 1 1; then ... ; fi"
+ return
+fi
+# Error si no se reciben 2 parámetros.
+[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+DISK=$(ogDiskToDev "$1")
+test -n "$(parted -sm $DISK print 2>/dev/null | \
+ awk -F: -v sf="$2" '{if ($1==sf) print $5}')"
+}
+
+
+#/**
# ogIsMounted int_ndisk int_npartition
#@brief Comprueba si un sistema de archivos está montado.
#@param int_ndisk nº de orden del disco
@@ -505,11 +533,15 @@ MNTDIR="$(ogGetMountPoint $1 $2)"
if [ -z "$MNTDIR" ]; then
# Error si la particion esta bloqueada.
ogIsLocked $1 $2 && ogRaiseError $OG_ERR_LOCKED "$1 $2" && return $?
- # Crear punto de montaje.
+ # Crear punto de montaje o enlace símbolico para Caché local.
MNTDIR=${PART/dev/mnt}
- mkdir -p $MNTDIR
- # Montar según el tipo de sitema de archivos.
TYPE="$(ogGetFsType $1 $2)" || return $?
+ if [ "$TYPE" == "CACHE" -a -n "$OGCAC" ]; then
+ ln -fs $OGCAC $MNTDIR
+ else
+ mkdir -p $MNTDIR
+ fi
+ # Montar según el tipo de sitema de archivos.
case "$TYPE" in
CACHE) MOUNT=mount ;;
EXT[234]) MOUNT=mount ;;
@@ -704,10 +736,11 @@ MNTDIR="$(ogGetMountPoint $1 $2)"
# Si está montada, desmontarla.
if [ -n "$MNTDIR" ]; then
- # Error si la particion esta bloqueada.
+ # Error si la particion está bloqueada.
ogIsLocked $1 $2 && ogRaiseError $OG_ERR_LOCKED "$1 $2" && return $?
- # Crear punto de montaje.
- umount $PART 2>/dev/null && rmdir $MNTDIR || ogEcho warning "$FUNCNAME: $MSG_DONTUNMOUNT: \"$1,$2\""
+ # Desmontar y borrar punto de montaje.
+ umount $PART 2>/dev/null || ogEcho warning "$FUNCNAME: $MSG_DONTUNMOUNT: \"$1,$2\""
+ rmdir $MNTDIR 2>/dev/null || rm -f $MNTDIR 2>/dev/null
# linea temporal durante desarrollo para testear nuevas herramientas con el cliente completo nfs
if grep -q nfsroot /proc/cmdline; then
cat /etc/mtab | grep -v $PART > /var/tmp/mtab.temporal && cp /var/tmp/mtab.temporal /var/tmp/mtab && rm /var/tmp/mtab.temporal
diff --git a/client/nfsexport/scripts/initCache b/client/nfsexport/scripts/initCache
index 75aa1fd8..28b4a90c 100755
--- a/client/nfsexport/scripts/initCache
+++ b/client/nfsexport/scripts/initCache
@@ -25,8 +25,7 @@ else
fi
# Si caché no montada y no formateada, formatear.
CACHE=$(ogFindCache) || return $?
- #if ogIsFormated $CACHE; then # API 1.0
- if ! ogIsMounted $CACHE && [ "$(ogGetFsType $CACHE)" != "CACHE" ]; then
+ if ! ogIsFormated $CACHE; then
echo "[50] Formatear caché local."
ogFormatCache
fi