13
14
struct trace_key trace_fsmonitor = TRACE_KEY_INIT(FSMONITOR);
15
16
+static void assert_index_minimum(struct index_state *istate, size_t pos)
17
+{
18
+ if (pos > istate->cache_nr)
19
+ BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
20
+ (uintmax_t)pos, istate->cache_nr);
21
+}
22
+
23
static void fsmonitor_ewah_callback(size_t pos, void *is)
24
{
25
struct index_state *istate = (struct index_state *)is;
26
struct cache_entry *ce;
27
21
- if (pos >= istate->cache_nr)
22
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" >= %u)",
23
- (uintmax_t)pos, istate->cache_nr);
28
+ assert_index_minimum(istate, pos + 1);
29
30
ce = istate->cache[pos];
31
ce->ce_flags &= ~CE_FSMONITOR_VALID;
87
}
88
istate->fsmonitor_dirty = fsmonitor_dirty;
89
85
- if (!istate->split_index &&
86
- istate->fsmonitor_dirty->bit_size > istate->cache_nr)
87
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
88
- (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
90
+ if (!istate->split_index)
91
+ assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
92
93
trace_printf_key(&trace_fsmonitor, "read fsmonitor extension successful");
94
return 0;
113
uint32_t ewah_size = 0;
114
int fixup = 0;
115
113
- if (!istate->split_index &&
114
- istate->fsmonitor_dirty->bit_size > istate->cache_nr)
115
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
116
- (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
116
+ if (!istate->split_index)
117
+ assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
118
119
put_be32(&hdr_version, INDEX_EXTENSION_VERSION2);
120
strbuf_add(sb, &hdr_version, sizeof(uint32_t));
336
}
337
338
/* Mark all previously saved entries as dirty */
338
- if (istate->fsmonitor_dirty->bit_size > istate->cache_nr)
339
- BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
340
- (uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
339
+ assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
340
ewah_each_bit(istate->fsmonitor_dirty, fsmonitor_ewah_callback, istate);
341
342
refresh_fsmonitor(istate);