[Grml-devel] [PATCH] added -F option to run fsck before mounting a filesystem

Thomas Koehler jean-luc at picard.franken.de
Fri May 28 11:14:33 CEST 2010


---
 TODO             |    1 -
 grml-crypt       |    8 +++++++-
 grml-crypt.8.txt |    4 ++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/TODO b/TODO
index db4e0cb..b6e8fde 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,6 @@
  - better cipher choosing (xts,essiv,plain)
  - rename?
  - add optimized ext3 fs profile for crypto (deactivated journal, activated dir_index and filetype)
- - add --fsck for start (execute "sleep 3 && fsck -C $DM_PATH_" || die "fsck failed on $DM_PATH_") (request thokoeh)
 
 Cleanup:
 hook_pre_initialize_=""
diff --git a/grml-crypt b/grml-crypt
index 0aef76d..fade32e 100755
--- a/grml-crypt
+++ b/grml-crypt
@@ -35,6 +35,7 @@ DM_PATH_=""
 ACTION_=""
 DM_PREFIX_="grml-crypt_"
 FORCE_='false'
+FSCK_='false'
 ENTROPY_SOURCE_='/dev/urandom'
 OPTIMIZED_MODE_SET_='false'
 OPTIMIZING_LEVEL_=0
@@ -65,6 +66,7 @@ OPTIONS:
    -o         optimised initialisation mode (should be as secure as the default but faster)
    -y         verifies the passphrase by asking for it twice
    -f         force file overwriting in format mode and/or disable confirmation dialog
+   -F         only for action start: run fsck before mounting the filesystem
    -m         additional arguments to mount
    -v         verbose (show what is going on, v++)
    -h         this help text
@@ -184,6 +186,9 @@ function actionStart
   $READONLY_SET_ && cargs_='--readonly'
   execute "$CRYPTSETUP_ $cargs_ luksOpen $TARGET_ $DM_NAME_" warn || execute "losetup -d $TARGET_" || \
     die "could not luksOpen $TARGET_"
+  if [[ "$FSCK_" == "true" ]] ; then
+    execute "fsck -C $DM_NAME_" || die "fsck failed on $DM_NAME_"
+  fi
   margs_=""
   $READONLY_SET_ && margs_='-r'
   execute "mount $margs_ $ADDITIONAL_MOUNT_ARGS_ $DM_PATH_ $MOUNT_POINT_" die
@@ -334,7 +339,7 @@ function actionFormat
 ### __MAIN
 ###
 
-while getopts "s:t:rzoyfm:hvS:C:I:A:" opt; do
+while getopts "s:t:rzoyfFm:hvS:C:I:A:" opt; do
   case "$opt" in
     s) SIZE_="$OPTARG"; SIZE_SET_='true' ;;
     t) FSTYPE_="$OPTARG" ;;
@@ -346,6 +351,7 @@ while getopts "s:t:rzoyfm:hvS:C:I:A:" opt; do
         OPTIMIZED_MODE_SET_='true' ;;
     y) VERIFY_PW_="--verify-passphrase" ;;
     f) FORCE_='true' ;;
+    F) FSCK_='true' ;;
     m) ADDITIONAL_MOUNT_ARGS_="$OPTARG" ;;
     h) printUsage; exit ;;
     v) let verbose_=$verbose_+1 ;;
diff --git a/grml-crypt.8.txt b/grml-crypt.8.txt
index 4fb3045..07bb54e 100644
--- a/grml-crypt.8.txt
+++ b/grml-crypt.8.txt
@@ -80,6 +80,10 @@ Shows what is going on (more v => more out).
     be bigger than 2MB for LUKS only + the constraints from the filesystems
     itself (eg. xfs needs a minimum of 4096 blocks).
 
+*-F*::
+    Only for action start: Run fsck on the filesystem before mounting it to
+    the given mountpoint.
+
 *-m*::
     Additional arguments passed through to mount. Could be like "'-o noatime'".
 
-- 
1.5.6.5



More information about the Grml-devel mailing list