|
@@ -10,24 +10,11 @@ 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 ;;
|
|
|
+ N) CALC_INODES=0; INODES=$OPTARG ;;
|
|
|
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
|
|
@@ -36,4 +23,14 @@ then
|
|
|
set -- $@ -N $INODES
|
|
|
fi
|
|
|
|
|
|
+# calculate needed blocks
|
|
|
+if [ $CALC_BLOCKS -eq 1 ];
|
|
|
+then
|
|
|
+ # size ~= superblock, block+inode bitmaps, inodes (8 per block), blocks
|
|
|
+ # we scale inodes / blocks with 10% to compensate for bitmaps size + slack
|
|
|
+ BLOCKS=$(du -s -c -k $TARGET_DIR | grep total | sed -e "s/total//")
|
|
|
+ BLOCKS=$(expr 500 + \( $BLOCKS + $INODES / 8 \) \* 11 / 10)
|
|
|
+ set -- $@ -b $BLOCKS
|
|
|
+fi
|
|
|
+
|
|
|
exec genext2fs $@
|