fix pread()'s short read in index-pack
commit838cd34664422863096f1a089f779bed1f00edf6
authorNicolas Pitre <nico@cam.org>
Fri, 10 Oct 2008 02:08:51 +0000 (9 22:08 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 10 Oct 2008 14:09:30 +0000 (10 07:09 -0700)
treebe36986d2f3b6e64e0770f4fc5045b3390cfeec9
parent44c33a5b9603fba7c9556512a72e4e392ba4ae2d
fix pread()'s short read in index-pack

Since v1.6.0.2~13^2~ the completion of a thin pack uses sha1write() for
its ability to compute a SHA1 on the written data.  This also provides
data buffering which, along with commit 92392b4a45, will confuse pread()
whenever an appended object is 1) freed due to memory pressure because
of the depth-first delta processing, and 2) needed again because it has
many delta children, and 3) its data is still buffered by sha1write().

Let's fix the issue by simply forcing cached data out when such an
object is written so it can be pread()'d at leisure.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
csum-file.c
csum-file.h
index-pack.c