Merge branch 'js/fsmonitor-unflake'
authorJunio C Hamano <gitster@pobox.com>
Mon, 17 Jun 2019 17:15:17 +0000 (10:15 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 17 Jun 2019 17:15:18 +0000 (10:15 -0700)
The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.

* js/fsmonitor-unflake:
mark_fsmonitor_valid(): mark the index as changed if needed
fill_stat_cache_info(): prepare for an fsmonitor fix

1  2 
read-cache.c
diff --combined read-cache.c
index 3477d081c92a8990d311562a064389cab84127e0,32816763bd6dbe3d5e1784b3a39bb8c431ec82f9..4dd22f4f6eb60ffa8f7c31a535a14b16fb403e53
@@@ -195,7 -195,7 +195,7 @@@ int match_stat_data(const struct stat_d
   * cache, ie the parts that aren't tracked by GIT, and only used
   * to validate the cache.
   */
- void fill_stat_cache_info(struct cache_entry *ce, struct stat *st)
+ void fill_stat_cache_info(struct index_state *istate, struct cache_entry *ce, struct stat *st)
  {
        fill_stat_data(&ce->ce_stat_data, st);
  
  
        if (S_ISREG(st->st_mode)) {
                ce_mark_uptodate(ce);
-               mark_fsmonitor_valid(ce);
+               mark_fsmonitor_valid(istate, ce);
        }
  }
  
@@@ -728,7 -728,7 +728,7 @@@ int add_to_index(struct index_state *is
        memcpy(ce->name, path, namelen);
        ce->ce_namelen = namelen;
        if (!intent_only)
-               fill_stat_cache_info(ce, st);
+               fill_stat_cache_info(istate, ce, st);
        else
                ce->ce_flags |= CE_INTENT_TO_ADD;
  
@@@ -1432,7 -1432,7 +1432,7 @@@ static struct cache_entry *refresh_cach
                         */
                        if (!S_ISGITLINK(ce->ce_mode)) {
                                ce_mark_uptodate(ce);
-                               mark_fsmonitor_valid(ce);
+                               mark_fsmonitor_valid(istate, ce);
                        }
                        return ce;
                }
        updated = make_empty_cache_entry(istate, ce_namelen(ce));
        copy_cache_entry(updated, ce);
        memcpy(updated->name, ce->name, ce->ce_namelen + 1);
-       fill_stat_cache_info(updated, &st);
+       fill_stat_cache_info(istate, updated, &st);
        /*
         * If ignore_valid is not set, we should leave CE_VALID bit
         * alone.  Otherwise, paths marked with --no-assume-unchanged
@@@ -2037,7 -2037,7 +2037,7 @@@ static void *load_cache_entries_thread(
  }
  
  static unsigned long load_cache_entries_threaded(struct index_state *istate, const char *mmap, size_t mmap_size,
 -                      unsigned long src_offset, int nr_threads, struct index_entry_offset_table *ieot)
 +                                               int nr_threads, struct index_entry_offset_table *ieot)
  {
        int i, offset, ieot_blocks, ieot_start, err;
        struct load_cache_entries_thread_data *data;
@@@ -2198,7 -2198,7 +2198,7 @@@ int do_read_index(struct index_state *i
                ieot = read_ieot_extension(mmap, mmap_size, extension_offset);
  
        if (ieot) {
 -              src_offset += load_cache_entries_threaded(istate, mmap, mmap_size, src_offset, nr_threads, ieot);
 +              src_offset += load_cache_entries_threaded(istate, mmap, mmap_size, nr_threads, ieot);
                free(ieot);
        } else {
                src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);