#!/usr/local/plan9/bin/rc # mkventi - prepare venti(7) file system . 9.rc fn usage { echo >[2=1] 'usage: mkventi [-f] [-a arenasize] [-b blocksize] venti.conf' exit usage } fn fmtisect { venti/fmtisect -b $blocksize `{basename $1} $1 } fn fmtarenas { venti/fmtarenas -a $arenasize -b $blocksize `{basename $1}^. $1 } fn fmtbloom { venti/fmtbloom $1 } fn fmtfiles { files=`{sed /^'#'/d $conf | awk '/'$1'/{print $2}'} if(! ~ $#files 0){ count='' while(~ $count ''){ echo -n $1' size (in blocks): ' count=`{read} } for(f in $files){ if(test -f $f) echo >[2=1] $f' exists; skipping' if not{ dd -quiet 1 -if /dev/zero -of $f -bs $blocksize -count $count $2 $f && fmtindex=1 } } } } arenasize=512m blocksize=8k fmtindex=0 while(~ $1 -*){ switch($1){ case -a if(~ $#* 1) usage arenasize=$2 shift case -b if(~ $#* 1) usage blocksize=$2 shift case -f fmtindex=1 case * usage } shift } if(! ~ $#* 1) usage conf=$1 fmtfiles isect fmtisect fmtfiles arenas fmtarenas fmtfiles bloom fmtbloom if(~ $fmtindex 0) echo >[2=1] 'fmtindex: no changes; skipping' if not venti/fmtindex $conf exit ''