diff options
author | ramon <ramongomez@us.es> | 2010-03-18 13:19:22 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2010-03-18 13:19:22 +0000 |
commit | 5a4f399e63c0c1f8c29d224e182a81953c0ce10c (patch) | |
tree | 2f6eaf79864c15e70574c6a80798a6f782cf0ecf /client | |
parent | e6c00374f445b8717a303e42157944002620130d (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-x | client/engine/Cache.lib | 16 | ||||
-rwxr-xr-x | client/engine/FileSystem.lib | 45 | ||||
-rwxr-xr-x | client/nfsexport/scripts/initCache | 3 |
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 |