git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH/RFC v3 01/13] Move index v2 specific functions to their own file

From
Thomas Gummerer <t.gummerer@gmail.com>
Date
Aug 10, 2012, 15:40 UTC
Message-ID
<20120810154015.GF5127@tommy-fedora.scientificnet.net>
In-Reply-To
<7vobmilro1.fsf@alter.siamese.dyndns.org>
On 08/10, Junio C Hamano wrote:
Show 27 quoted lines
> Thomas Rast <trast@student.ethz.ch> writes:
> 
> > But I think the idea always was that any write that changes the basic
> > layout of the file (so that you would read something wrong) will need a
> > full rewrite.  Otherwise we're too far in DB land.
> >
> > Most updates will be
> > of the "update the stat and/or sha1 of a file" kind, anyway.
> 
> Yes, I agree the v5 format documented in the series does not let you
> do anything other than the kind of updates without rewriting [*1*]
> 
> But that does not fundamentally change the story that a new format
> and a new way to access the index to cope with larger projects would
> want to come up with a solution to address the competing read/write
> issue, or at least help to make it easier to solve the issue in the
> future.
> 
> "That problem is not new" is not an answer when the question is "We
> still have the problem".
> 
> 
> [Footnote]
> 
> *1* While my gut feeling matches your guess that the kind of updates
> would be the majority, I do not think anybody did numbers to
> substanticate it, which we may want to see happen.

Hrm anther way to solve this may be the following. The idea would be to just check if the index_file changed basically using the same heuristic we already use to detect file changes. (use the stat data, mtime, size, etc.)

With this code we do not rely on the crc sums to check if the index needs to be re-read anymore and don't have a problem if part of the index changes, after we read it (we know the index changed from its mtime and can just re-read it). Another thing that would have to change is that we can't use die if a crc is wrong, but some return code, but that shouldn't be a problem. I'm not sure I'm not missing something here though.

do {
	fd = open()
	fstat(fd, &st_old);
	mmap = xmmap(fd);
	verify_various_fields(mmap);
	istate->ops->read_index(istate,
				mmap,
				mmap_size));
	fstat(fd, &st_new);
	close(fd);
} while (stat_data_doesnt_match(st_old, st_new));
Previous: Junio C HamanoNext: Thomas Gummerer
Message 11 of 34 in “Introduce index file format version 5”
  1. 0/13 Introduce index file format version 5Thomas Gummerer, Aug 8, 2012
  2. 01/13 Move index v2 specific functions to their own fileThomas Gummerer, Aug 8, 2012
  3. Nguyen Thai Ngoc DuyAug 8, 2012
  4. Thomas GummererAug 8, 2012
  5. Junio C HamanoAug 9, 2012
  6. Thomas GummererAug 9, 2012
  7. Junio C HamanoAug 10, 2012
  8. Nguyen Thai Ngoc DuyAug 10, 2012
  9. Thomas RastAug 10, 2012
  10. Junio C HamanoAug 10, 2012
  11. Thomas GummererAug 10, 2012
  12. 02/13 t2104: Don't fail for index versions other than [23]Thomas Gummerer, Aug 8, 2012
  13. 03/13 t3700: Avoid interfering with the racy codeThomas Gummerer, Aug 8, 2012
  14. 04/13 Add documentation of the index-v5 file formatThomas Gummerer, Aug 8, 2012
  15. Junio C HamanoAug 9, 2012
  16. Thomas GummererAug 9, 2012
  17. Junio C HamanoAug 9, 2012
  18. 05/13 Make in-memory format aware of stat_crcThomas Gummerer, Aug 8, 2012
  19. 06/13 Read index-v5Thomas Gummerer, Aug 8, 2012
  20. Nguyen Thai Ngoc DuyAug 8, 2012
  21. Johannes SixtAug 8, 2012
  22. Junio C HamanoAug 8, 2012
  23. Thomas GummererAug 8, 2012
  24. 07/13 Read resolve-undo dataThomas Gummerer, Aug 8, 2012
  25. Junio C HamanoAug 9, 2012
  26. Thomas GummererAug 9, 2012
  27. Junio C HamanoAug 10, 2012
  28. Thomas GummererAug 10, 2012
  29. 08/13 Read cache-tree in index-v5Thomas Gummerer, Aug 8, 2012
  30. 09/13 Write index-v5Thomas Gummerer, Aug 8, 2012
  31. 10/13 Write index-v5 cache-tree dataThomas Gummerer, Aug 8, 2012
  32. 11/13 Write resolve-undo data for index-v5Thomas Gummerer, Aug 8, 2012
  33. 12/13 update-index.c: always rewrite the index when index-version is givenThomas Gummerer, Aug 8, 2012
  34. 13/13 p0002-index.sh: add perf test for the index formatsThomas Gummerer, Aug 8, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.