From 30edc625bd8381f4efe736d1fab2e8c6d38c50a5 Mon Sep 17 00:00:00 2001 From: Venkatesh Srinivas Date: Thu, 27 Mar 2025 14:21:40 +0000 Subject: venti: Session.read(): Handle reads for 0-score/any type locally vac archives may have the zero-score (da39...) with any type. I've observed type VtDirType + 3, for a single 720 MiB file, for example. The reference venti server will not find zero-score blocks with type != 0; and the reference client does not send reads for zero-score blocks regardless of type (see libventi/client.c: vtreadpacket). Implement the same logic in venti.b. --- appl/lib/venti.b | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appl/lib/venti.b b/appl/lib/venti.b index cfb3a8ec..d2f9db9a 100644 --- a/appl/lib/venti.b +++ b/appl/lib/venti.b @@ -323,6 +323,10 @@ Session.new(fd: ref Sys->FD): ref Session Session.read(s: self ref Session, score: Score, etype: int, maxn: int): array of byte { + if (Score.eq(score, Score.zero()) { + return array[0] of byte; + } + (gm, err) := s.rpc(ref Vmsg.Tread(1, 0, score, etype, maxn)); if(gm == nil){ sys->werrstr(err); -- cgit v1.2.3