Subject: Re: Error "fatal: cannot pread pack file: Success"

From: "Shawn O. Pearce" <[email-masked]>
Date: Tue, 27 Feb 2007 22:57:13 -0500

Bill Lear <[email-masked]> wrote:
> Using 1.5.0.1.  Can't see what is wrong with this clone...
...
> Indexing 4589 objects.
> remote: Total 4589 (delta 2209), reused 4589 (delta 2209)
>  100% (4589/4589) done
> Resolving 2209 deltas.
> fatal: cannot pread pack file: Success
> fatal: index-pack died with error code 128
> fetch-pack from '/home/rael/devel/project/.git' failed.

What platform is this?  index-pack failed to read using pread(),
but the error code in errno was 0 (success)?  Huh?

It turns out this is steaming from a short read; we asked for some
length of bytes but did not get that exact value.  That sounds like
the packfile is truncated.

Ohh - is this repository on NFS, or some other sort of network
filesystem?  Maybe the FS couldn't give us the entire pread request
in one shot...

I think the pread() in get_data_from_pack of index-pack is wrong,
it really should be looping until we fill the buffer in case the
OS doesn't fully satisfy our read request the first time.

-- 
Shawn.