From patchwork Sat Sep 7 20:40:36 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2,of,6] revlog.revision: fix cache preload for inline revlogs From: Siddharth Agarwal X-Patchwork-Id: 2406 Message-Id: <6d30cb54be060a26ce4a.1378586436@dev1091.prn1.facebook.com> To: mercurial-devel@selenic.com Date: Sat, 07 Sep 2013 13:40:36 -0700 # HG changeset patch # User Siddharth Agarwal # Date 1378582966 25200 # Sat Sep 07 12:42:46 2013 -0700 # Node ID 6d30cb54be060a26ce4a042be8ff43b88afc9829 # Parent 338cb41f98bf07596ba4b3b29d624ed77b4f18a1 revlog.revision: fix cache preload for inline revlogs Previously the length of data preloaded did not account for the interleaved io contents. This meant that we'd sometimes have cache misses in _chunks despite the preloading. Having a correctly filled out cache will become essential in an upcoming patch. diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -845,9 +845,11 @@ def _chunkraw(self, startrev, endrev): start = self.start(startrev) - length = self.end(endrev) - start + end = self.end(endrev) if self._inline: start += (startrev + 1) * self._io.size + end += (endrev + 1) * self._io.size + length = end - start return self._getchunk(start, length) def _chunk(self, rev):