1. 02 Dec, 2008 1 commit
  2. 17 Nov, 2008 1 commit
    • Linus Torvalds's avatar
      Fix index preloading for racy dirty case · 7c4ea599
      Linus Torvalds authored
      In the threaded index preloading case, we must be sure to always use the
      CE_MATCH_RACY_IS_DIRTY flag when calling ie_match_stat(), in order to make
      sure that we only ever look at the stat() data, and don't try to do
      anything fancy.
      
      Because most of git internals are not thread-safe, and must not be called
      in parallel.
      
      Otherwise, what happens is that if the timestamps indicate that an entry
      _might_ be dirty, we might start actually comparing filesystem data with
      the object database. And we mustn't do that, because that would involve
      looking up and creating the object structure, and that whole code sequence
      with read_sha1_file() where we look up and add objects to the hashes is
      definitely not thread-safe.
      
      Nor do we want to add locking, because the whole point of the preload was
      to be simple and not affect anything else. With CE_MATCH_RACY_IS_DIRTY, we
      get what we wanted, and we'll just leave the hard cases well alone, to be
      done later in the much simpler serial case.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
      7c4ea599
  3. 15 Nov, 2008 1 commit
    • Linus Torvalds's avatar
      Add cache preload facility · 671c9b7e
      Linus Torvalds authored
      This can do the lstat() storm in parallel, giving potentially much
      improved performance for cold-cache cases or things like NFS that have
      weak metadata caching.
      
      Just use "read_cache_preload()" instead of "read_cache()" to force an
      optimistic preload of the index stat data.  The function takes a
      pathspec as its argument, allowing us to preload only the relevant
      portion of the index.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
      671c9b7e