exit 1
}
+#takes files, randomdata
_nfiles()
{
f=0
file=f$f
echo > $file
if [ $size -gt 0 ]; then
- dd if=/dev/zero of=$file bs=1024 count=$size
+ if [ $2 == false ]; then
+ dd if=/dev/zero of=$file bs=1024 count=$size 2>&1 | _filter_dd
+ else
+ dd if=/dev/urandom of=$file bs=1024 count=$size 2>&1 | _filter_dd
+ fi
fi
let f=$f+1
done
}
-# takes dirname, depth
+# takes dirname, depth, randomdata
_descend()
{
- dirname=$1; depth=$2
+ dirname=$1; depth=$2; randomdata=$3
mkdir $dirname || die "mkdir $dirname failed"
cd $dirname
- _nfiles $files # files for this dir
+ _nfiles $files $randomdata # files for this dir and data type
[ $depth -eq 0 ] && return
let deep=$depth-1 # go 1 down
# Populate a filesystem with inodes for performance experiments
#
-# usage: populate [-v] [-n ndirs] [-f nfiles] [-d depth] [-r root] [-s size]
+# usage: populate [-v] [-n ndirs] [-f nfiles] [-d depth] [-r root] [-s size] [-x]
#
_populate_fs()
{
depth=2 # depth of tree from root to leaves
verbose=false
root=root # path of initial root of directory tree
+ randomdata=false # -x data type urandom or zero
- while getopts "d:f:n:r:s:v" c
+ while getopts "d:f:n:r:s:v:x" c
do
case $c in
d) depth=$OPTARG;;
s) size=$OPTARG;;
v) verbose=true;;
r) root=$OPTARG;;
+ x) randomdata=true;;
esac
done
- _descend $root $depth
+ _descend $root $depth $randomdata
wait
cd $here