Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > On Wed, 7 Jan 2009, Linus Torvalds wrote: > > > > So there's a few rules to packedgitwindowsize: > > > > - we need to be able to have at least two windows open at a time, in > > addition to all the "normal" memory git needs just for objects, of > > course. And quite frankly, you'd be better off with a few more windows, > > even if that obviously implies smaller windows. > > Btw, I'm not 100% certain of this. Somebody should double-check me. Maybe > there are cases where we want more than two windows alive. And maybe there > aren't even that, and we can always make do with just one. > > So I will _not_ guarantee that "at least two pack windows" is necessarily > the right answer. The windowing code was mostly other people doing it. I > think Shawn and Nico. I was fairly certain we needed at least two windows open at once, but reviewing the code in sha1_file.c I don't see a reason for that restriction anymore. I think it used to have to do with the delta reconstruction; to unpack a delta we would read the delta header from one window, but we may need base data from another. The delta unpack code kept the delta window pinned in use, so we couldn't replace it to access base data from elsewhere, hence we needed two windows. Thinking about it now I don't recall how we handled the recusion on a delta chain longer than 2. ;-) But looking at the code we have long since refactored it so this isn't an issue anymore. We release the window between reading the delta header and reading the base, so the delta window can be replaced if necessary. I think the "2 window minimum" is just a performance suggestion, not a requirement. -- Shawn. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html