aboutsummaryrefslogtreecommitdiff
path: root/fsmonitor.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-02-10 14:48:32 -0800
committerJunio C Hamano <gitster@pobox.com>2021-02-10 14:48:33 -0800
commit2f794620f5dda37405e4ba9b606061468eceed98 (patch)
tree5536aa9904d3db0128ef6a50a0500a2d258c0d5f /fsmonitor.c
parent02fb21617e0da10c6cadb1c55147299456633bca (diff)
parent19a0acc83e4692dc19a5c7f676b79793fd4dcad7 (diff)
downloadgit-2f794620f5dda37405e4ba9b606061468eceed98.tar.xz
Merge branch 'ds/more-index-cleanups'
Cleaning various codepaths up. * ds/more-index-cleanups: t1092: test interesting sparse-checkout scenarios test-lib: test_region looks for trace2 regions sparse-checkout: load sparse-checkout patterns name-hash: use trace2 regions for init repository: add repo reference to index_state fsmonitor: de-duplicate BUG()s around dirty bits cache-tree: extract subtree_pos() cache-tree: simplify verify_cache() prototype cache-tree: clean up cache_tree_update()
Diffstat (limited to 'fsmonitor.c')
-rw-r--r--fsmonitor.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/fsmonitor.c b/fsmonitor.c
index ca031c3abb..fe9e9d7baf 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -13,14 +13,19 @@
struct trace_key trace_fsmonitor = TRACE_KEY_INIT(FSMONITOR);
+static void assert_index_minimum(struct index_state *istate, size_t pos)
+{
+ if (pos > istate->cache_nr)
+ BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
+ (uintmax_t)pos, istate->cache_nr);
+}
+
static void fsmonitor_ewah_callback(size_t pos, void *is)
{
struct index_state *istate = (struct index_state *)is;
struct cache_entry *ce;
- if (pos >= istate->cache_nr)
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" >= %u)",
- (uintmax_t)pos, istate->cache_nr);
+ assert_index_minimum(istate, pos + 1);
ce = istate->cache[pos];
ce->ce_flags &= ~CE_FSMONITOR_VALID;
@@ -82,10 +87,8 @@ int read_fsmonitor_extension(struct index_state *istate, const void *data,
}
istate->fsmonitor_dirty = fsmonitor_dirty;
- if (!istate->split_index &&
- istate->fsmonitor_dirty->bit_size > istate->cache_nr)
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
- (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
+ if (!istate->split_index)
+ assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
trace_printf_key(&trace_fsmonitor, "read fsmonitor extension successful");
return 0;
@@ -110,10 +113,8 @@ void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
uint32_t ewah_size = 0;
int fixup = 0;
- if (!istate->split_index &&
- istate->fsmonitor_dirty->bit_size > istate->cache_nr)
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
- (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
+ if (!istate->split_index)
+ assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
put_be32(&hdr_version, INDEX_EXTENSION_VERSION2);
strbuf_add(sb, &hdr_version, sizeof(uint32_t));
@@ -335,9 +336,7 @@ void tweak_fsmonitor(struct index_state *istate)
}
/* Mark all previously saved entries as dirty */
- if (istate->fsmonitor_dirty->bit_size > istate->cache_nr)
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
- (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
+ assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
ewah_each_bit(istate->fsmonitor_dirty, fsmonitor_ewah_callback, istate);
refresh_fsmonitor(istate);