From f5a8ea6fd8908c6f42670b8546239fdbc7fdbf03 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 2 Jun 2011 09:33:56 -0400 Subject: venti: import changes from plan 9 R=rsc CC=plan9port.codebot http://codereview.appspot.com/4523057 --- src/cmd/venti/srv/index.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/cmd/venti/srv/index.c') diff --git a/src/cmd/venti/srv/index.c b/src/cmd/venti/srv/index.c index 0b68928a..07bf81c8 100644 --- a/src/cmd/venti/srv/index.c +++ b/src/cmd/venti/srv/index.c @@ -328,16 +328,20 @@ newindex(char *name, ISect **sects, int n) } if(nb >= ((u64int)1 << 32)){ - seterr(EBug, "index too large"); - return nil; + fprint(2, "%s: index is 2^32 blocks or more; ignoring some of it\n", + argv0); + nb = ((u64int)1 << 32) - 1; } div = (((u64int)1 << 32) + nb - 1) / nb; - ub = (((u64int)1 << 32) - 1) / div + 1; if(div < 100){ - seterr(EBug, "index divisor too coarse [%lld buckets]", nb); - return nil; + fprint(2, "%s: index divisor %d too coarse; " + "index larger than needed, ignoring some of it\n", + argv0, div); + div = 100; + nb = (((u64int)1 << 32) - 1) / (100 - 1); } + ub = (((u64int)1 << 32) - 1) / div + 1; if(ub > nb){ seterr(EBug, "index initialization math wrong"); return nil; -- cgit v1.2.3