xref: /plan9/sys/lib/dist/pc/inst/fmtfossil (revision 9c06fe1d54c51a5e47f19e590a2bc12b07b5d99e)
139734e7eSDavid du Colombier#!/bin/rc
239734e7eSDavid du Colombier
339734e7eSDavid du Colombier# desc: initialize disks for a fossil server
4a22b0629SDavid du Colombier# prereq: configfs
539734e7eSDavid du Colombier
639734e7eSDavid du Colombierswitch($1){
739734e7eSDavid du Colombiercase checkready checkdone
839734e7eSDavid du Colombier	if(! ~ $fstype fossil+venti fossil){
939734e7eSDavid du Colombier		fmtfossil=notdone
1039734e7eSDavid du Colombier		export fmtfossil
1139734e7eSDavid du Colombier		exit
1239734e7eSDavid du Colombier	}
1339734e7eSDavid du Colombier	ff=`{ls /dev/sd*/fossil* /dev/fs/fossil* >[2]/dev/null}
1439734e7eSDavid du Colombier	if(~ $#ff 0){
1539734e7eSDavid du Colombier		fmtfossil=notdone
1639734e7eSDavid du Colombier		export fmtfossil
1739734e7eSDavid du Colombier		exit
1839734e7eSDavid du Colombier	}
1939734e7eSDavid du Colombier	gg=()
2039734e7eSDavid du Colombier	for(f in $ff)
2139734e7eSDavid du Colombier		if(isfossil $f)
2239734e7eSDavid du Colombier			gg=($gg $f)
2339734e7eSDavid du Colombier	if(~ $#gg 0){
2439734e7eSDavid du Colombier		fmtfossil=ready
2539734e7eSDavid du Colombier		export fmtfossil
2639734e7eSDavid du Colombier		exit
2739734e7eSDavid du Colombier	}
2839734e7eSDavid du Colombier	fmtfossil=done
2939734e7eSDavid du Colombier	export fmtfossil
3039734e7eSDavid du Colombier	exit
3139734e7eSDavid du Colombier
3239734e7eSDavid du Colombiercase go
3339734e7eSDavid du Colombier	ff=`{ls /dev/sd*/fossil* /dev/fs/fossil* >[2]/dev/null}
3439734e7eSDavid du Colombier	if(~ $#ff 0){
3539734e7eSDavid du Colombier		echo 'You need to create a partition or partitions to hold the Fossil write cache.'
3639734e7eSDavid du Colombier		echo 'The partition name must begin with "fossil".'
3739734e7eSDavid du Colombier		echo
3839734e7eSDavid du Colombier		fmtfossil=notdone
3939734e7eSDavid du Colombier		export fmtfossil
4039734e7eSDavid du Colombier		exit
4139734e7eSDavid du Colombier	}
4239734e7eSDavid du Colombier	default=()
4339734e7eSDavid du Colombier	if(~ $#ff 1){
4439734e7eSDavid du Colombier		default=(-d $ff)
4539734e7eSDavid du Colombier	}
4639734e7eSDavid du Colombier	echo You have the following fossil partitions.
4739734e7eSDavid du Colombier	echo
4839734e7eSDavid du Colombier	prompt $default 'Fossil partition to format' $ff
4939734e7eSDavid du Colombier	f=$rd
5039734e7eSDavid du Colombier
5139734e7eSDavid du Colombier	do=yes
5239734e7eSDavid du Colombier	if(isfossil $f){
5339734e7eSDavid du Colombier		echo $f appears to already be formatted as Fossil file system.
5439734e7eSDavid du Colombier		echo Do you really want to reformat it?
5539734e7eSDavid du Colombier		echo
5639734e7eSDavid du Colombier		prompt -d no 'Reformat '$f yes no
5739734e7eSDavid du Colombier		do=$rd
5839734e7eSDavid du Colombier	}
5939734e7eSDavid du Colombier	if(~ $do yes){
6039734e7eSDavid du Colombier		fossil/flfmt -y $f
61*9c06fe1dSDavid du Colombier		n=`{cat /dev/swap | grep ' user' | sed 's/^[0-9]+\/([0-9]+) .*/\1/'}
6239734e7eSDavid du Colombier		if(test $n -gt 32768)
6339734e7eSDavid du Colombier			m=3000	# if have at least 128 user MB, use 24MB for fossil
6439734e7eSDavid du Colombier		if not if(test $n -gt 16384)
6539734e7eSDavid du Colombier			m=1500	# 64 user MB => 12MB for fossil
6639734e7eSDavid du Colombier		if not if(test $n -gt 8192)
6739734e7eSDavid du Colombier			m=750	# 32 user MB => 6MB for fossil
6839734e7eSDavid du Colombier		if not
6939734e7eSDavid du Colombier			m=256	# 2MB for fossil (this will be slow)
7039734e7eSDavid du Colombier
7139734e7eSDavid du Colombier		# if we're using a venti in the back, take hourly snapshots
7239734e7eSDavid du Colombier		# that retire after three days, in addition to the daily dumps at 5am
7339734e7eSDavid du Colombier		if(~ $fstype fossil+venti){
7439734e7eSDavid du Colombier			v=''
75a22b0629SDavid du Colombier			snap='fsys main snaptime -s 60 -a 0500 -t 2880'
7639734e7eSDavid du Colombier		}
7739734e7eSDavid du Colombier		# otherwise, take the daily dumps but nothing else --
7839734e7eSDavid du Colombier		# we can't retire snapshots unless dumps are being archived
7939734e7eSDavid du Colombier		if not{
8039734e7eSDavid du Colombier			v='-V'
81a22b0629SDavid du Colombier			snap=''
8239734e7eSDavid du Colombier		}
8339734e7eSDavid du Colombier		echo \
8439734e7eSDavid du Colombier'fsys main config '^$f^'
8539734e7eSDavid du Colombierfsys main open '^$v^' -c '^$m^'
86a22b0629SDavid du Colombier'^$snap^'
8739734e7eSDavid du Colombier'		| fossil/conf -w $f
8839734e7eSDavid du Colombier	}
8939734e7eSDavid du Colombier
9039734e7eSDavid du Colombier	echo Done.
9139734e7eSDavid du Colombier}
92