summaryrefslogtreecommitdiffstats
path: root/client/engine/FileSystem.lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/engine/FileSystem.lib')
-rwxr-xr-xclient/engine/FileSystem.lib91
1 files changed, 47 insertions, 44 deletions
diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib
index ca4486b0..5c69e089 100755
--- a/client/engine/FileSystem.lib
+++ b/client/engine/FileSystem.lib
@@ -21,34 +21,44 @@
#@note Requisitos: *fsck*
#@warning No se comprueban sistemas de archivos montados o bloqueados.
#@todo Definir salidas.
-#@version 0.9 - Primera adaptación para OpenGNSys.
+#@version 0.9 - Primera adaptación para OpenGnSys.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-10-07
+#@version 1.0.2 - Ignorar códigos de salida de comprobación (no erróneos).
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2011-09-23
#*/
function ogCheckFs ()
{
# Variables locales.
-local PART TYPE PROG PARAMS
+local PART TYPE PROG PARAMS CODES ERRCODE
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
+ "$FUNCNAME 1 1"
+ return
+fi
-#/// Error si no se reciben 2 parámetros.
+# Error si no se reciben 2 parámetros.
[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-#/// Obtener partición.
+# Obtener partición.
PART="$(ogDiskToDev $1 $2)" || return $?
TYPE=$(ogGetFsType $1 $2)
case "$TYPE" in
- EXT[234]) PROG="e2fsck" ;;
- REISERFS) PROG="reiserfsck"; PARAMS="<<<\"Yes\"" ;;
- JFS) PROG="fsck.jfs" ;;
+ EXT[234]) PROG="e2fsck"; PARAMS="-y"; CODES=(1 2) ;;
+ REISERFS) PROG="fsck.reiserfs"; PARAMS="<<<\"Yes\""; CODES=(1 2) ;;
+ REISER4) PROG="fsck.reiser4"; PARAMS="-ay" ;;
+ JFS) PROG="fsck.jfs"; CODES=(1 2) ;;
XFS) PROG="fsck.xfs" ;;
NTFS|HNTFS) PROG="ntfsfix" ;;
- FAT32|HFAT32) PROG="dosfsck"; PARAMS="-a" ;;
- FAT16|HFAT16) PROG="dosfsck"; PARAMS="-a" ;;
- FAT12|HFAT12) PROG="dosfsck"; PARAMS="-a" ;;
+ FAT32|HFAT32) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;;
+ FAT16|HFAT16) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;;
+ FAT12|HFAT12) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;;
*) ogRaiseError $OG_ERR_PARTITION "$1, $2, $TYPE"
- return $? ;;
+ return $? ;;
esac
-#/// Error si el sistema de archivos esta montado o bloqueado.
+# Error si el sistema de archivos esta montado o bloqueado.
if ogIsMounted $1 $2; then
ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error
return $?
@@ -57,14 +67,17 @@ if ogIsLocked $1 $2; then
ogRaiseError $OG_ERR_LOCKED "$1 $2"
return $?
fi
-#/// Comprobar en modo uso exclusivo.
+# Comprobar en modo uso exclusivo.
ogLock $1 $2
eval $PROG $PARAMS $PART
ERRCODE=$?
case $ERRCODE in
- 0) ;;
- 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" ;;
- *) ogRaiseError $OG_ERR_PARTITION "$1 $2" ;;
+ 0|${CODES[*]})
+ ERRCODE=0 ;;
+ 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG"
+ ERRCODE=$OG_ERR_NOTEXEC ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$1 $2"
+ ERRCODE=$OG_ERR_PARTITION ;;
esac
ogUnlock $1 $2
return $ERRCODE
@@ -91,22 +104,22 @@ return $ERRCODE
function ogExtendFs ()
{
# Variables locales.
-local PART PROG PARAMS
+local PART TYPE PROG PARAMS ERRCODE
-#/// Si se solicita, mostrar ayuda.
+# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
"$FUNCNAME 1 1"
return
fi
-#/// Error si no se reciben 2 parámetros.
+# Error si no se reciben 2 parámetros.
[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
-#/// Obtener partición.
+# Obtener partición.
PART="$(ogDiskToDev $1 $2)" || return $?
ogUnmount $1 $2 2>/dev/null
-#/// Redimensionar al tamano máximo según el tipo de partición.
+# Redimensionar al tamano máximo según el tipo de partición.
TYPE=$(ogGetFsType $1 $2)
case "$TYPE" in
EXT[234]) PROG="resize2fs"; PARAMS="-f" ;;
@@ -115,7 +128,7 @@ case "$TYPE" in
*) ogRaiseError $OG_ERR_PARTITION "$1 $2 $TYPE"
return $? ;;
esac
-#/// Error si el sistema de archivos está montado o bloqueado.
+# Error si el sistema de archivos está montado o bloqueado.
if ogIsMounted $1 $2; then
ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error
return $?
@@ -124,14 +137,16 @@ if ogIsLocked $1 $2; then
ogRaiseError $OG_ERR_LOCKED "$1 $2"
return $?
fi
-#/// Redimensionar en modo uso exclusivo.
+# Redimensionar en modo uso exclusivo.
ogLock $1 $2
eval $PROG $PARAMS $PART &>/dev/null
ERRCODE=$?
case $ERRCODE in
0) ;;
- 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" ;;
- *) ogRaiseError $OG_ERR_PARTITION "$1 $2" ;;
+ 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG"
+ ERRCODE=$OG_ERR_NOTEXEC ;;
+ *) ogRaiseError $OG_ERR_PARTITION "$1 $2"
+ ERRCODE=$OG_ERR_PARTITION ;;
esac
ogUnlock $1 $2
return $ERRCODE
@@ -217,7 +232,8 @@ if [ -z "$PROG" ]; then
REISERFS) PROG="mkfs.reiserfs"; PARAMS="-f" ;;
REISER4) PROG="mkfs.reiser4";;
XFS) PROG="mkfs.xfs"; PARAMS="-f" ;;
- JFS) PROG="mkfs.jfs"; PARAMS="<<<\"y\"";;
+ JFS) PROG="mkfs.jfs"; PARAMS="<<<\"y\"" ;;
+ LINUX-SWAP) PROG="mkswap" ;;
NTFS|HNTFS) PROG="mkntfs"; PARAMS="-f" ;;
FAT32|HFAT32) PROG="mkdosfs"; PARAMS="-F 32" ;;
FAT16|HFAT16) PROG="mkdosfs"; PARAMS="-F 16" ;;
@@ -278,11 +294,10 @@ return $ERRCODE
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2009-07-21
#*/ ##
-function ogGetFsType () {
-
+function ogGetFsType ()
+{
# Variables locales.
-local ID TYPE
-
+local DISK ID TYPE
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
@@ -326,7 +341,7 @@ case "$ID" in
fd) TYPE="LINUX-RAID" ;;
*) TYPE="UNKNOWN" ;;
esac
-echo $TYPE
+echo "$TYPE"
}
@@ -591,13 +606,8 @@ if [ -z "$MNTDIR" ]; then
$MOUNT $PARAMS $PART $MNTDIR 2>/dev/null || \
$MOUNT $PARAMS $PART $MNTDIR -o force,remove_hiberfile 2>/dev/null || \
ogRaiseError $OG_ERR_PARTITION "$1, $2, $TYPE" || return $?
- # linea temporal durante desarrollo para poder usar el cliente completo nfs y testeas nuevas herramientas.
- if grep -q nfsroot /proc/cmdline; then
- echo "$PART $MNTDIR" >> /etc/mtab
- fi
- # fin linea temporal.
fi
-echo $MNTDIR
+echo "$MNTDIR"
}
@@ -688,8 +698,6 @@ case "$(ogGetFsType $1 $2)" in
*) ogRaiseError $OG_ERR_PARTITION "$1,$2"
return $? ;;
esac
-#/// Mostrar nuevo tamaño en KB.
-#echo $[SIZE*1024]
ogGetFsSize $1 $2
}
@@ -847,11 +855,6 @@ if [ -n "$MNTDIR" ]; then
# 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
- grep -v $PART /etc/mtab > /var/tmp/mtab.temporal && cp /var/tmp/mtab.temporal /var/tmp/mtab && rm /var/tmp/mtab.temporal
- fi
- # fin linea temporal.
else
ogEcho warning "$MSG_DONTMOUNT: \"$1,$2\""
fi