Skip to content
Permalink
Browse files

fixup! checkout.c: enable fscache for checkout_entry

The recently introduced speedup of `git checkout` sadly introduced a
regression: after writing a file, the cached stat data is obviously
incorrect, yet we still used it!

This patch simply reverts the original speedup (as opposed to try to
hotfix it as #1443 tries to
do), and marks it as a fixup commit so that the next merging-rebase will
drop the patch.

We will most likely want to speed up this code path, though, but may
find a better way, e.g. by invalidating the cached data cleverly. (This
will be a *little* tricky, though, as readdir() uses the data, and we
must ensure that we do not pull it under readdir()'s rag when
invalidating it, and we also must avoid re-caching for every written
file, as that would be *even* slower than fscache=false.)

This fixes #1438 and
#1442

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information...
dscho committed Jan 22, 2018
1 parent e76e5c4 commit 1a4ee4d5d83bbba63f6d8b71c427f627769f3386
Showing with 0 additions and 2 deletions.
  1. +0 −2 builtin/checkout.c
@@ -359,7 +359,6 @@ static int checkout_paths(const struct checkout_opts *opts,
state.istate = &the_index;

enable_delayed_checkout(&state);
enable_fscache(1);
for (pos = 0; pos < active_nr; pos++) {
struct cache_entry *ce = active_cache[pos];
if (ce->ce_flags & CE_MATCHED) {
@@ -374,7 +373,6 @@ static int checkout_paths(const struct checkout_opts *opts,
pos = skip_same_name(ce, pos) - 1;
}
}
enable_fscache(0);
errs |= finish_delayed_checkout(&state);

if (write_locked_index(&the_index, &lock_file, COMMIT_LOCK))

0 comments on commit 1a4ee4d

Please sign in to comment.
You can’t perform that action at this time.