#!/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; INODES=$OPTARG ;; d) TARGET_DIR=$OPTARG ;; esac done # calculate needed inodes if [ $CALC_INODES -eq 1 ]; then INODES=$(find $TARGET_DIR | wc -l) INODES=$(expr $INODES + 400) 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 $@