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 <alexmv@dropbox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
6f1dc21d98
commit
3bd28eb299
@ -10,7 +10,14 @@ extern struct trace_key trace_fsmonitor;
|
||||
extern int read_fsmonitor_extension(struct index_state *istate, const void *data, unsigned long sz);
|
||||
|
||||
/*
|
||||
* Write the CE_FSMONITOR_VALID state into the fsmonitor index extension.
|
||||
* Fill the fsmonitor_dirty ewah bits with their state from the index,
|
||||
* before it is split during writing.
|
||||
*/
|
||||
extern void fill_fsmonitor_bitmap(struct index_state *istate);
|
||||
|
||||
/*
|
||||
* Write the CE_FSMONITOR_VALID state into the fsmonitor index
|
||||
* extension. Reads from the fsmonitor_dirty ewah in the index.
|
||||
*/
|
||||
extern void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate);
|
||||
|
||||
|
Reference in New Issue
Block a user