From 3bd28eb29912801481b293691039b05caebf13a3 Mon Sep 17 00:00:00 2001 From: Alex Vandiver Date: Thu, 9 Nov 2017 11:58:10 -0800 Subject: fsmonitor: store fsmonitor bitmap before splitting index ba1b9cac ("fsmonitor: delay updating state until after split index is merged", 2017-10-27) resolved the problem of the fsmonitor data being applied to the non-base index when reading; however, a similar problem exists when writing the index. Specifically, writing of the fsmonitor extension happens only after the work to split the index has been applied -- as such, the information in the index is only for the non-"base" index, and thus the extension information contains only partial data. When saving, compute the ewah bitmap before the index is split, and store it in the fsmonitor_dirty field, mirroring the behavior that occurred during reading. fsmonitor_dirty is kept from being leaked by being freed when the extension data is written -- which always happens precisely once, no matter the split index configuration. Signed-off-by: Alex Vandiver Signed-off-by: Junio C Hamano --- read-cache.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'read-cache.c') diff --git a/read-cache.c b/read-cache.c index 05c0a33fdd..0724ea8c9b 100644 --- a/read-cache.c +++ b/read-cache.c @@ -2525,6 +2525,9 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock, int new_shared_index, ret; struct split_index *si = istate->split_index; + if (istate->fsmonitor_last_update) + fill_fsmonitor_bitmap(istate); + if (!si || alternate_index_output || (istate->cache_changed & ~EXTMASK)) { if (si) -- cgit v1.3-5-g9baa