[RFC PATCH 07/21] entry: extract cache_entry update from write_entry()
- From
Matheus Tavares <matheus.bernardino@usp.br>
- Date
- Aug 10, 2020, 21:33 UTC
- Message-ID
- <4b9e130278495aa7819e5cfd450b0b01d8b58b6d.1597093021.git.matheus.bernardino@usp.br>
- In-Reply-To
- <cover.1597093021.git.matheus.bernardino@usp.br>
This code will be used by the parallel checkout functions, outside entry.c, so extract it to a public function.
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> --- entry.c | 26 +++++++++++++++++--------- entry.h | 2 ++ 2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/entry.c b/entry.c index cc27564473..837629a804 100644 --- a/entry.c +++ b/entry.c @@ -251,6 +251,19 @@ int finish_delayed_checkout(struct checkout *state, int *nr_checkouts) return errs; } +void update_ce_after_write(const struct checkout *state, struct cache_entry *ce, + struct stat *st) +{ + if (state->refresh_cache) { + assert(state->istate); + fill_stat_cache_info(state->istate, ce, st); + ce->ce_flags |= CE_UPDATE_IN_BASE; + mark_fsmonitor_invalid(state->istate, ce); + state->istate->cache_changed |= CE_ENTRY_CHANGED; + } +} + + static int write_entry(struct cache_entry *ce, char *path, const struct checkout *state, int to_tempfile) { @@ -371,15 +384,10 @@ static int write_entry(struct cache_entry *ce, finish: if (state->refresh_cache) { - assert(state->istate); - if (!fstat_done) - if (lstat(ce->name, &st) < 0) - return error_errno("unable to stat just-written file %s", - ce->name); - fill_stat_cache_info(state->istate, ce, &st); - ce->ce_flags |= CE_UPDATE_IN_BASE; - mark_fsmonitor_invalid(state->istate, ce); - state->istate->cache_changed |= CE_ENTRY_CHANGED; + if (!fstat_done && lstat(ce->name, &st) < 0) + return error_errno("unable to stat just-written file %s", + ce->name); + update_ce_after_write(state, ce , &st); } delayed: return 0; diff --git a/entry.h b/entry.h index f860e60846..664aed1576 100644 --- a/entry.h +++ b/entry.h @@ -39,5 +39,7 @@ int finish_delayed_checkout(struct checkout *state, int *nr_checkouts); void unlink_entry(const struct cache_entry *ce); void *read_blob_entry(const struct cache_entry *ce, unsigned long *size); int fstat_checkout_output(int fd, const struct checkout *state, struct stat *st); +void update_ce_after_write(const struct checkout *state, struct cache_entry *ce, + struct stat *st); #endif /* ENTRY_H */
-- 2.27.0