> vtWrite in venti/copy.c always gets called regardless to
> the result of walk()s in the switch clause starting at
> /sys/src/cmd/venti/copy.c:70.  Or am I misreading the source?

This is true, and that's intentional.  If the block is missing
on the one server, venti/copy prints an error and then
keeps going.  That's so that if there is a block missing,
you still copy what you can.

If the network flakes out mid-copy, it won't just affect
one or two blocks and then come back.  The session
is being run over a single tcp connection with no
redialing, so if you lose the network during one block,
you're not going to be able to copy any of the rest of the
blocks either.

Oh!  I see what happened.  If there is a read error due to
network failure (as opposed to do the block just being
corrupt on the remote server) then venti/copy needs to
call sysfatal to avoid vtwriting the block we were in the
middle of.

I'll fix this.  Thanks for the report.

Russ

Reply via email to