From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <432bc0dde71c69a75de5f60bf55915ec@tombob.com> To: 9fans@cse.psu.edu Date: Mon, 25 Sep 2006 22:11:31 +0100 From: Robert Raschke MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] venti backup example vs. 2GB Topicbox-Message-UUID: c11ca6c4-ead1-11e9-9d60-3106f5b1d025 Hi, I've been using a backup script modelled on the example in /sys/src/cmd/venti/backup.example and the other day it "just" stopped working. On debugging I found that I have now reached the beginning of the fifth 500MB arena. The script uses awk to calculate the starting byte offset and that fails with a floating point error (!) when we go beyond the 2G mark. I resorted to a fairly brutal use of bc(1) and that seems to work. Here's what I use now (I flipped the 2nd and 3rd parameter to the x fn to make printing from bc easier): #!/bin/rc rfork e . bkup.info fn x { echo x $* y=$1 if(~ $#$y 0){ $y=0 } echo venti/wrarena -h venti_backup_server -o $3 $2 $$y end=`{venti/wrarena -h venti_backup_server -o $3 $2 $$y | grep '^end offset ' | sed 's/^end offset //'} if(~ $#end 1 && ! ~ $$y $end){ $y=$end echo '#' `{date} >>bkup.info whatis $y >>bkup.info } } hget http://127.1:8000/index | awk ' /^index=/ { blockSize=0+substr($3, 11); } /^arena=/ { arena=substr($1, 7); } /^ arena=/ { start=substr($5, 2, index($5, ",")-2); printf("\"x \"; \"%s \"; \"%s \"; s=%s-%s; print s;", arena, $3, start, blockSize); } ' |bc -s |rc Robby