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

Re: [PATCH 1/6] Add memory pool library

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
Jun 7, 2010, 13:28 UTC
Message-ID
<AANLkTimzuJXjX4OJUkmQtLwjGDgHBaZUHSGA0xUUi6kY@mail.gmail.com>
In-Reply-To
<20100604182928.GB20909@progeny.tock>
Hi Jonathan,
Jonathan Nieder wrote:
Show 15 quoted lines
>  The memory pool library is distinguished from the existing specialized
>  allocators in alloc.c by using a contiguous block for all allocations.
>  This means that on one hand, long-lived pointers have to be written as
>  offsets, since the base address changes as the pool grows, but on the
>  other hand, the entire pool can be easily written to the file system.
>  This allows the memory pool to persist between runs of an application.
>
>  For svn-fe, such a facility is useful because each svn revision can
>  copy trees and files from any previous revision.  Therefore the
>  relevant information for all revisions has to persist somehow to
>  support incremental runs.
>
>  The current implementation is backed by the file system using mmap().
>
> Thanks for the explanations, David.
Thanks. Added to commit message: should be fine the next time I post the series.
> Whitespace damaged.
Fixed in b180ad7 (pushed few seconds ago).
> Probably an ignorant question, but why?  I do not think the win32 mmap
> emulation in git currently supports sysconf().
I'm not sure why the pool capacity should be dependent on the page size.
>        ..._pool.file = open(..., O_RDWR);
Fixed in b180ad7 (pushed few seconds ago).
> This is the first use of MAP_SHARED in git.  I wouldn’t be surprised if
> the win32 mmap emulation does not support it.
You're right; I just checked. compat/mmap.c:7 clearly specifies that
only MAP_PRIVATE is supported.
	if (start != NULL || !(flags & MAP_PRIVATE))
		die("Invalid usage of mmap when built with NO_MMAP");
What can we do about this? Should we attempt to implement MAP_SHARED?
> Necessary?  (Maybe yes: we are about to truncate the file, so the
> fsync() may be intended to force the data to be committed before
> the metadata.)  Portable?  (I suspect the fsync() should go after
> the munmap().)

You want to flush changes *after* unmapping the pages of memory from the file? I can't find any notes on portability relating to this- can you clarify?

> Because of these portability concerns, I’d rather use the old version
> until the incremental parser is ready.

Rolling back that many changes can be more painful than actually fixing these few concerns (especially large number of change after `dirents` was merged in). It means more delay in getting the exporter merged.

-- Ram
Previous: Jonathan NiederNext: Erik Faye-Lund
Message 4 of 15 in “Merge David's SVN exporter”
  1. 0/6 Merge David's SVN exporterRamkumar Ramachandra, Jun 4, 2010
  2. 1/6 Add memory pool libraryRamkumar Ramachandra, Jun 4, 2010
  3. Jonathan NiederJun 4, 2010
  4. Ramkumar RamachandraJun 7, 2010
  5. Erik Faye-LundJun 7, 2010
  6. Ramkumar RamachandraJun 7, 2010
  7. 2/6 Add cpp macro implementation of treapsRamkumar Ramachandra, Jun 4, 2010
  8. 3/6 Add library for string-specific memory poolRamkumar Ramachandra, Jun 4, 2010
  9. 4/6 Add stream helper libraryRamkumar Ramachandra, Jun 4, 2010
  10. Jonathan NiederJun 4, 2010
  11. 5/6 Add infrastructure to write revisions in fast-export formatRamkumar Ramachandra, Jun 4, 2010
  12. Jonathan NiederJun 4, 2010
  13. Ramkumar RamachandraJun 7, 2010
  14. David Michael BarrJun 7, 2010
  15. 6/6 Add SVN dump parserRamkumar Ramachandra, Jun 4, 2010

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.