git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/12] Fix some reference-related races
@ 2013-06-20  8:37 Michael Haggerty
  2013-06-20  8:37 ` [PATCH v3 01/12] repack_without_ref(): split list curation and entry writing Michael Haggerty
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Michael Haggerty @ 2013-06-20  8:37 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Jeff King, Johan Herland, Ramsay Jones, git, Michael Haggerty

v3 of mh/ref-races.  Thanks to Junio for the suggestion implemented in
this version.

Change since v2:

* Change lock_packed_refs() to use its own struct lock_file rather
  than requiring the caller to supply its own.

Please note that this patch series's usage of stat()/fstat() causes
breakages under cygwin, pointed out by Ramsay Jones.  He has
graciously offered to work on this issue.

Patch 12/12 is still optional--it avoids a little bit of work when
rewriting the packed-refs file (including when deleting a reference
that has a packed version), but relies on the stat-based freshness
check not giving a false negative.  Peff seems to lean slightly
against merging the last patch and AFAIK nobody else has expressed an
opinion.  (Of course, if the test cannot be relied upon in the check
before writing, then we should not forget that its failure in a check
before reading can also cause problems, however rarely.)

Jeff King (2):
  get_packed_ref_cache: reload packed-refs file when it changes
  for_each_ref: load all loose refs before packed refs

Michael Haggerty (10):
  repack_without_ref(): split list curation and entry writing
  pack_refs(): split creation of packed refs and entry writing
  refs: wrap the packed refs cache in a level of indirection
  refs: implement simple transactions for the packed-refs file
  refs: manage lifetime of packed refs cache via reference counting
  do_for_each_entry(): increment the packed refs cache refcount
  packed_ref_cache: increment refcount when locked
  Extract a struct stat_data from cache_entry
  add a stat_validity struct
  refs: do not invalidate the packed-refs cache unnecessarily

 builtin/clone.c    |   5 +-
 builtin/ls-files.c |  12 +-
 cache.h            |  60 ++++++++--
 read-cache.c       | 181 ++++++++++++++++++------------
 refs.c             | 319 ++++++++++++++++++++++++++++++++++++++++++++---------
 refs.h             |  26 ++++-
 6 files changed, 469 insertions(+), 134 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-06-20  8:44 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-20  8:37 [PATCH v3 00/12] Fix some reference-related races Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 01/12] repack_without_ref(): split list curation and entry writing Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 02/12] pack_refs(): split creation of packed refs " Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 03/12] refs: wrap the packed refs cache in a level of indirection Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 04/12] refs: implement simple transactions for the packed-refs file Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 05/12] refs: manage lifetime of packed refs cache via reference counting Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 06/12] do_for_each_entry(): increment the packed refs cache refcount Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 07/12] packed_ref_cache: increment refcount when locked Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 08/12] Extract a struct stat_data from cache_entry Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 09/12] add a stat_validity struct Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 10/12] get_packed_ref_cache: reload packed-refs file when it changes Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 11/12] for_each_ref: load all loose refs before packed refs Michael Haggerty
2013-06-20  8:37 ` [PATCH v3 12/12] refs: do not invalidate the packed-refs cache unnecessarily Michael Haggerty

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).