139734e7eSDavid du Colombier#!/bin/rc 239734e7eSDavid du Colombier 339734e7eSDavid du Colombier# desc: initialize disks for a venti server 4a22b0629SDavid du Colombier# prereq: mountdist 539734e7eSDavid du Colombier 639734e7eSDavid du Colombierswitch($1){ 739734e7eSDavid du Colombiercase checkready checkdone 839734e7eSDavid du Colombier if(! ~ $fstype fossil+venti){ 939734e7eSDavid du Colombier fmtventi=notdone 1039734e7eSDavid du Colombier export fmtventi 1139734e7eSDavid du Colombier exit 1239734e7eSDavid du Colombier } 13a22b0629SDavid du Colombier if(! test -e /bin/venti/fmtarenas || ! test -e /bin/venti/fmtisect || ! test -e /bin/venti/fmtindex){ 14a22b0629SDavid du Colombier bind -a /n/dist/386/bin/venti /bin/venti 15a22b0629SDavid du Colombier if(! test -e /bin/venti/fmtarenas || ! test -e /bin/venti/fmtisect || ! test -e /bin/venti/fmtindex){ 16a22b0629SDavid du Colombier fmtventi=notdone 17a22b0629SDavid du Colombier export fmtventi 18a22b0629SDavid du Colombier exit 19a22b0629SDavid du Colombier } 20a22b0629SDavid du Colombier } 21a22b0629SDavid du Colombier ff=`{ls /dev/sd*/arenas* /dev/fs/arenas* >[2]/dev/null} 22a22b0629SDavid du Colombier if(~ $#ff 0){ 23a22b0629SDavid du Colombier fmtventi=notdone 24a22b0629SDavid du Colombier export fmtventi 25a22b0629SDavid du Colombier exit 26a22b0629SDavid du Colombier } 2739734e7eSDavid du Colombier gg=() 2839734e7eSDavid du Colombier for(f in $ff) 2939734e7eSDavid du Colombier if(isventi $f) 3039734e7eSDavid du Colombier gg=($gg $f) 3139734e7eSDavid du Colombier if(~ $#gg 0){ 32a22b0629SDavid du Colombier fmtventi=ready 3339734e7eSDavid du Colombier export fmtventi 3439734e7eSDavid du Colombier exit 3539734e7eSDavid du Colombier } 36a22b0629SDavid du Colombier 37a22b0629SDavid du Colombier ventiarena=$gg(1) 38a22b0629SDavid du Colombier export ventiarena 39a22b0629SDavid du Colombier 4039734e7eSDavid du Colombier fmtventi=done 4139734e7eSDavid du Colombier export fmtventi 4239734e7eSDavid du Colombier exit 4339734e7eSDavid du Colombier 4439734e7eSDavid du Colombiercase go 45a22b0629SDavid du Colombier ff=`{ls /dev/sd*/arenas* /dev/fs/arenas* >[2]/dev/null} 4639734e7eSDavid du Colombier if(~ $#ff 0){ 4739734e7eSDavid du Colombier echo 'You need to create a partition or partitions to hold the Venti arenas.' 48a22b0629SDavid du Colombier echo 'The arena partition names must begin with "arenas".' 4939734e7eSDavid du Colombier echo 5039734e7eSDavid du Colombier fmtventi=notdone 5139734e7eSDavid du Colombier export fmtventi 5239734e7eSDavid du Colombier exit 5339734e7eSDavid du Colombier } 5439734e7eSDavid du Colombier default=(-d $"ff) 5539734e7eSDavid du Colombier if(! ~ $#ventiarena 0){ 5639734e7eSDavid du Colombier default=(-d $"ventiarena) 5739734e7eSDavid du Colombier } 58*f8d0ebfeSDavid du Colombier echo You have the following Venti arena partitions. 5939734e7eSDavid du Colombier ls -l $ff 6039734e7eSDavid du Colombier echo 6139734e7eSDavid du Colombier 6239734e7eSDavid du Colombier prompt $default 'Venti arena partitions to use' 6339734e7eSDavid du Colombier aa=`{echo $rd} 6439734e7eSDavid du Colombier bad=no 6539734e7eSDavid du Colombier for(a in $aa){ 6639734e7eSDavid du Colombier if(! ~ $a $ff){ 6739734e7eSDavid du Colombier echo 'Bad venti arena partition' $a 6839734e7eSDavid du Colombier fmtventi=notdone 6939734e7eSDavid du Colombier export fmtventi 7039734e7eSDavid du Colombier exit 7139734e7eSDavid du Colombier } 7239734e7eSDavid du Colombier } 7339734e7eSDavid du Colombier ventiarena=$aa 7439734e7eSDavid du Colombier export ventiarena 7539734e7eSDavid du Colombier 76a22b0629SDavid du Colombier gg=`{ls /dev/sd*/isect* /dev/fs/isect* >[2]/dev/null} 7739734e7eSDavid du Colombier if(~ $#gg 0){ 7839734e7eSDavid du Colombier echo 'You need to create a partition or partitions to hold the Venti indices.' 79a22b0629SDavid du Colombier echo 'The index partition names must begin with "isect".' 8039734e7eSDavid du Colombier echo 8139734e7eSDavid du Colombier fmtventi=notdone 8239734e7eSDavid du Colombier export fmtventi 8339734e7eSDavid du Colombier exit 8439734e7eSDavid du Colombier } 8539734e7eSDavid du Colombier default=(-d $"gg) 8639734e7eSDavid du Colombier if(! ~ $#ventiindex 0){ 8739734e7eSDavid du Colombier default=(-d $"ventiindex) 8839734e7eSDavid du Colombier } 8939734e7eSDavid du Colombier 9039734e7eSDavid du Colombier echo You have the following Venti index partitions. 9139734e7eSDavid du Colombier ls -l $gg 9239734e7eSDavid du Colombier echo 9339734e7eSDavid du Colombier 94*f8d0ebfeSDavid du Colombier prompt $default 'Venti index partitions to use' 9539734e7eSDavid du Colombier aa=`{echo $rd} 9639734e7eSDavid du Colombier bad=no 9739734e7eSDavid du Colombier for(a in $aa){ 9839734e7eSDavid du Colombier if(! ~ $a $gg){ 9939734e7eSDavid du Colombier echo 'Bad venti index partition' $a 10039734e7eSDavid du Colombier fmtventi=notdone 10139734e7eSDavid du Colombier export fmtventi 10239734e7eSDavid du Colombier exit 10339734e7eSDavid du Colombier } 10439734e7eSDavid du Colombier } 10539734e7eSDavid du Colombier ventiindex=$aa 10639734e7eSDavid du Colombier export ventiindex 10739734e7eSDavid du Colombier 10839734e7eSDavid du Colombier n=-1 10939734e7eSDavid du Colombier fmta=() 11039734e7eSDavid du Colombier for(a in $ventiarena){ 11139734e7eSDavid du Colombier do=yes 11239734e7eSDavid du Colombier n=`{hoc -e 1+$n} 11339734e7eSDavid du Colombier if(isventiarenas $a){ 11439734e7eSDavid du Colombier echo File $a is already formatted as a Venti arenas partition. 11539734e7eSDavid du Colombier prompt -d no 'Reformat '$a yes no 11639734e7eSDavid du Colombier do=$rd 11739734e7eSDavid du Colombier } 11839734e7eSDavid du Colombier if(~ $do yes) 11939734e7eSDavid du Colombier fmta=($fmta arenas$n:$a) 12039734e7eSDavid du Colombier } 12139734e7eSDavid du Colombier 12239734e7eSDavid du Colombier n=-1 12339734e7eSDavid du Colombier fmti=() 12439734e7eSDavid du Colombier for(a in $ventiindex){ 12539734e7eSDavid du Colombier do=yes 12639734e7eSDavid du Colombier n=`{hoc -e 1+$n} 12739734e7eSDavid du Colombier if(isventiisect $a){ 12839734e7eSDavid du Colombier echo File $a is already formatted as a Venti index section. 12939734e7eSDavid du Colombier prompt -d no 'Reformat '$a yes no 13039734e7eSDavid du Colombier do=$rd 13139734e7eSDavid du Colombier } 13239734e7eSDavid du Colombier if(~ $do yes) 13339734e7eSDavid du Colombier fmti=($fmti isect$n:$a) 13439734e7eSDavid du Colombier } 13539734e7eSDavid du Colombier 13639734e7eSDavid du Colombier echo Formatting Venti arenas and indices (this takes a while). 13739734e7eSDavid du Colombier # do each disk in parallel 13839734e7eSDavid du Colombier echo good >/tmp/fmt 13939734e7eSDavid du Colombier dd=() 14039734e7eSDavid du Colombier for(a in $fmta $fmti){ 14139734e7eSDavid du Colombier d=`{echo $a | sed 's!.*:(/.*/).*!\1!'} 14239734e7eSDavid du Colombier if(! ~ $d $dd) 143a22b0629SDavid du Colombier dd=($dd $d) 14439734e7eSDavid du Colombier } 14539734e7eSDavid du Colombier for(d in $dd){ 14639734e7eSDavid du Colombier { 14739734e7eSDavid du Colombier for(a in $fmta){ 14839734e7eSDavid du Colombier i=`{echo $a | sed 's!(.*):(/.*/)(.*)!\1 \2 \2\3!'} 14939734e7eSDavid du Colombier if(~ $i(2) $d){ 15039734e7eSDavid du Colombier echo $i(3) ... 15139734e7eSDavid du Colombier venti/fmtarenas $i(1) $i(3) || echo bad >/tmp/fmt 15239734e7eSDavid du Colombier echo done with $i(3) 15339734e7eSDavid du Colombier } 15439734e7eSDavid du Colombier } 15539734e7eSDavid du Colombier for(a in $fmti){ 15639734e7eSDavid du Colombier i=`{echo $a | sed 's!(.*):(/.*/)(.*)!\1 \2 \2\3!'} 15739734e7eSDavid du Colombier if(~ $i(2) $d){ 15839734e7eSDavid du Colombier echo $i(3) ... 159a22b0629SDavid du Colombier venti/fmtisect $i(1) $i(3) || echo bad >/tmp/fmt 16039734e7eSDavid du Colombier echo done with $i(3) 16139734e7eSDavid du Colombier } 16239734e7eSDavid du Colombier } 16339734e7eSDavid du Colombier } & 16439734e7eSDavid du Colombier } 16539734e7eSDavid du Colombier wait 16639734e7eSDavid du Colombier if(~ bad `{cat /tmp/fmt}){ 16739734e7eSDavid du Colombier echo There were errors formatting the indices and arenas. 16839734e7eSDavid du Colombier fmtventi=ready 16939734e7eSDavid du Colombier export fmtventi 17039734e7eSDavid du Colombier exit errors 17139734e7eSDavid du Colombier } 17239734e7eSDavid du Colombier 17339734e7eSDavid du Colombier echo Done formatting Venti arenas and indices. 17439734e7eSDavid du Colombier 17539734e7eSDavid du Colombier v=$ventiarena(1) 17639734e7eSDavid du Colombier echo Storing Venti config on $v... 17739734e7eSDavid du Colombier { 17839734e7eSDavid du Colombier echo index main 17939734e7eSDavid du Colombier for(i in $ventiindex) 18039734e7eSDavid du Colombier echo isect $i 18139734e7eSDavid du Colombier for(a in $ventiarena) 182a22b0629SDavid du Colombier echo arenas $a 18339734e7eSDavid du Colombier } | venti/conf -w $v 18439734e7eSDavid du Colombier 18539734e7eSDavid du Colombier echo Initializing index... 186a22b0629SDavid du Colombier venti/fmtindex $v 18739734e7eSDavid du Colombier 18839734e7eSDavid du Colombier echo Done with Venti! 18939734e7eSDavid du Colombier} 19039734e7eSDavid du Colombier 191