diff options
Diffstat (limited to 'client/engine/FileSystem.lib')
-rwxr-xr-x | client/engine/FileSystem.lib | 91 |
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 |