summaryrefslogtreecommitdiff
path: root/fs/ext2/genext2fs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext2/genext2fs.sh')
-rwxr-xr-xfs/ext2/genext2fs.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh
new file mode 100755
index 000000000..b315ec30a
--- /dev/null
+++ b/fs/ext2/genext2fs.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+# genext2fs wrapper calculating needed blocks/inodes values if not specified
+
+export LC_ALL=C
+
+CALC_BLOCKS=1
+CALC_INODES=1
+
+while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f
+do
+ case $f in
+ b) CALC_BLOCKS=0 ;;
+ N) CALC_INODES=0 ;;
+ d) TARGET_DIR=$OPTARG ;;
+ esac
+done
+
+# calculate needed blocks
+if [ $CALC_BLOCKS -eq 1 ];
+then
+ BLOCKS=$(du -s -c -k $TARGET_DIR | grep total | sed -e "s/total//")
+ if [ $BLOCKS -ge 20000 ];
+ then
+ BLOCKS=$(expr $BLOCKS + 16384)
+ else
+ BLOCKS=$(expr $BLOCKS + 2400)
+ fi
+ set -- $@ -b $BLOCKS
+fi
+
+# calculate needed inodes
+if [ $CALC_INODES -eq 1 ];
+then
+ INODES=$(find $TARGET_DIR | wc -l)
+ INODES=$(expr $INODES + 400)
+ set -- $@ -N $INODES
+fi
+
+exec genext2fs $@