From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Paul Tarjan via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Patrick Steinhardt <ps@pks.im>,
Paul Tarjan <paul@paultarjan.com>,
Paul Tarjan <github@paulisageek.com>,
Paul Tarjan <github@paulisageek.com>
Subject: Re: [PATCH v12 13/13] fsmonitor: fix split-index bitmap bounds in tweak_fsmonitor()
Date: Sun, 5 Apr 2026 00:10:36 +0200 (CEST) [thread overview]
Message-ID: <b96ed977-525e-c3fc-a626-db1a4b3da376@gmx.de> (raw)
In-Reply-To: <84ddbb30bb3862d4230ba1775d4c061832f2623f.1774937958.git.gitgitgadget@gmail.com>
Hi Paul,
On Tue, 31 Mar 2026, Paul Tarjan via GitGitGadget wrote:
> From: Paul Tarjan <github@paulisageek.com>
>
> When GIT_TEST_SPLIT_INDEX=yes is set and the fsmonitor daemon is
> active, tweak_fsmonitor() can hit a BUG() assertion:
>
> BUG: fsmonitor.c:27: fsmonitor_dirty has more entries than the index (2 > 0)
>
> The fsmonitor_dirty EWAH bitmap may reference positions from a
> previous index state. With split-index, cache_nr can be smaller
> than the bitmap expects because entries have not been merged yet.
>
> This is related to the issue that 05f28e4b3c (scalar: use
> index.skipHash=true for performance, 2025-06-04) worked around by
> disabling GIT_TEST_SPLIT_INDEX in t9210, noting "the issue should
> be resolved in a series focused on the split index." This fixes
> the fsmonitor bitmap side; the index.skipHash interaction remains.
>
> Two places hit this:
>
> - tweak_fsmonitor() calls assert_index_minimum() without the
> !istate->split_index guard that the read path (line 98) and
> write path (line 128) already have. Add the same guard.
>
> - fsmonitor_ewah_callback() unconditionally asserts and then
> accesses istate->cache[pos], which is out of bounds with
> split-index. Replace the assertion with a bounds check that
> silently skips positions beyond cache_nr.
This issue (and in particular the BUG assertion reported by the CI
failures Junio pointed at in
https://lore.kernel.org/git/xmqqjyus4qp2.fsf@gitster.g/) sounded quite
familiar to me, so I consulted my notes. I had fixed a similar symptom
after a seriously tedious debugging session via 3b7a4475b091 (split-index;
stop abusing the `base_oid` to strip the "link" extension, 2023-03-26).
But alas, this reference did not help, I found no similar bug that could
be the culprit here.
So I bisected the CI failure and it turns out that, as I suspected, this
patch addresses a symptom, not the root cause. The bug has nothing to do
with Linux FSMonitor support and this patch should be dropped from the
series. See below for a suggestion what to do instead.
The failing CI job is `linux-TEST-vars`, which is the _only_ job that sets
`GIT_TEST_SPLIT_INDEX=yes`. Before this series,
`fsmonitor_ipc__is_supported()` returned 0 on Linux, so Scalar never set
`core.fsmonitor=true`, and therefore there was never a FSMonitor bitmap in
the index, and the assertion in `tweak_fsmonitor()` could never fire. Now
that Linux has FSMonitor support, Scalar enables it, and the bitmap sanity
check exposes a _pre-existing_ corruption in the `index.skipHash` +
split-index interaction.
The interacting topic is `hn/git-checkout-m-with-stash` (specifically
ced477a20fa4, "checkout: -m (--merge) uses autostash when switching
branches"). That commit adds an unconditional `discard_index()` +
`repo_read_index()` cycle at the end of `switch_branches()`, even when
no autostash was created. (That is probably undesirable behavior, it
should be guarded.)
Here is the chain of events:
1. Scalar sets `index.skipHash=true` (this is Scalar's default since
05f28e4b3cc1 (scalar: use index.skipHash=true for performance,
2025-12-12)).
2. With `GIT_TEST_SPLIT_INDEX=yes`, `write_locked_index()` writes a
split index. It calls `write_shared_index()`, which calls
`do_write_index()` for the shared index. Because `skipHash=true`,
the trailing hash is left as all-zeros, so `si->base->oid` is the
null OID.
3. `write_shared_index()` then does
(https://gitlab.com/git-scm/git/-/blob/v2.53.0/read-cache.c#L3283):
oidcpy(&si->base_oid, &si->base->oid);
...copying the null OID into `base_oid`. The shared index file is
renamed to `sharedindex.0000000000000000000000000000000000000000`.
4. The `hn/git-checkout-m-with-stash` topic's unconditional
`discard_index()` + `repo_read_index()` re-reads the index from
disk.
5. In `read_index_from()` (read-cache.c:2375), the condition
if (!split_index || is_null_oid(&split_index->base_oid))
is true, so the shared index is never loaded, `merge_base_index()`
is never called, and we jump straight to `post_read_index_from()`.
6. This leaves `cache_nr=0` (all entries live in the never-loaded
shared index), but the FSMonitor extension's `fsmonitor_dirty`
bitmap was written against the full merged index (2 entries).
7. `tweak_fsmonitor()` (called from `post_read_index_from()`) hits:
assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
and fires the BUG: `bit_size=2 > cache_nr=0`.
The same bug would reproduce on macOS or Windows if those platforms had
a TEST-vars CI job with `GIT_TEST_SPLIT_INDEX=yes`.
Now, about the patch itself (reordering the hunks for clarity):
> Signed-off-by: Paul Tarjan <github@paulisageek.com>
> ---
> fsmonitor.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/fsmonitor.c b/fsmonitor.c
> index d07dc18967..5e5a4fadea 100644
> --- a/fsmonitor.c
> +++ b/fsmonitor.c
> @@ -805,7 +806,8 @@ void tweak_fsmonitor(struct index_state *istate)
> }
>
> /* Mark all previously saved entries as dirty */
> - assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
> + if (!istate->split_index)
> + assert_index_minimum(istate, istate->fsmonitor_dirty->bit_size);
> ewah_each_bit(istate->fsmonitor_dirty, fsmonitor_ewah_callback, istate);
>
> refresh_fsmonitor(istate);
This guard in `tweak_fsmonitor()` is not analogous to the guards in
`read_fsmonitor_extension()` and `write_fsmonitor_extension()`. Those
guards exist because those functions run before `merge_base_index()` has
been called. But `tweak_fsmonitor()` runs after `merge_base_index()` in
the normal read path (via `post_read_index_from()`). The fact that
`cache_nr=0` when `tweak_fsmonitor()` runs means the shared index was
never loaded at all, which is the real bug.
For historical context: ba1b9caca699 ("fsmonitor: delay updating state
until after split index is merged", 2017-10-27) intentionally arranged for
`tweak_fsmonitor()` to run post-merge, and 392d797e2e60 (fsmonitor: do not
check fsmonitor_dirty bits against cache entries on split index,
2019-10-31) and 7621a6f43428 (fsmonitor: do not compare bitmap size with
size of split index, 2019-11-21) added the `!istate->split_index` guard to
the read/write paths only, deliberately leaving `tweak_fsmonitor()`
unguarded because at that point the merge is expected to have happened.
cae70acf2431 (fsmonitor: de-duplicate BUG()s around dirty bits,
2021-01-23) refactored the BUG()s into `assert_index_minimum()`, again
preserving this pattern. Suppressing the assertion here would hide the
fact that the index is in a broken state.
> @@ -33,7 +33,8 @@ static void fsmonitor_ewah_callback(size_t pos, void *is)
> struct index_state *istate = (struct index_state *)is;
> struct cache_entry *ce;
>
> - assert_index_minimum(istate, pos + 1);
> + if (pos >= istate->cache_nr)
> + return;
>
> ce = istate->cache[pos];
> ce->ce_flags &= ~CE_FSMONITOR_VALID;
This change to `fsmonitor_ewah_callback()` is particularly dangerous:
silently skipping dirty entries means files that the FSMonitor daemon
reported as changed could be treated as unchanged. That is a correctness
bug.
The proper fix belongs in one of two places:
1. `write_shared_index()` should not allow `base_oid` to become the
null OID. When `index.skipHash=true`, the shared index needs a real
identifier. This is the root cause.
2. Alternatively, the `hn/git-checkout-m-with-stash` topic should
guard its `discard_index()` + `repo_read_index()` with something
like `if (created_autostash)`, since the index reload is only
needed when an autostash was actually applied.
But that would probably only buy some time until another code path
introduces a similar pattern, and maybe shouldn't even be considered a
real fix.
Alternatively, I'd suggest:
3. The same work-around as was introduced in 05f28e4b3cc1 (scalar: use
index.skipHash=true for performance, 2025-12-12), namely to simply
force-disable split index in the offending test case (or move the
existing `sane_unset` to the top of the file, since
`index.skipHash=true` is a Scalar thing):
-- snip --
diff --git a/t/t9210-scalar.sh b/t/t9210-scalar.sh
index 009437a5f316..a4e38ad644e4 100755
--- a/t/t9210-scalar.sh
+++ b/t/t9210-scalar.sh
@@ -152,6 +152,11 @@ test_expect_success 'set up repository to clone' '
'
test_expect_success 'scalar clone' '
+ # The split index refers to the base index via OID; Scalar sets
+ # index.skipHash, though, and therefore that OID is always bogus;
+ # Scalar/index.skipHash are simply incompatible with split-index
+ sane_unset GIT_TEST_SPLIT_INDEX &&
+
second=$(git rev-parse --verify second:second.t) &&
scalar clone "file://$(pwd)" cloned --single-branch &&
(
-- snap --
Either way, this 13/13 patch should be dropped from the fsmonitor-linux
series, I think.
Ciao,
Johannes
next prev parent reply other threads:[~2026-04-04 22:10 UTC|newest]
Thread overview: 211+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-30 8:14 [PATCH] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2025-12-30 11:38 ` Junio C Hamano
2025-12-30 12:08 ` [PATCH v2] " Paul Tarjan via GitGitGadget
2025-12-30 12:55 ` [PATCH v3] " Paul Tarjan via GitGitGadget
2025-12-31 17:41 ` [PATCH v4] " Paul Tarjan via GitGitGadget
2026-01-05 12:07 ` Patrick Steinhardt
2026-02-20 22:18 ` Junio C Hamano
2026-02-21 16:15 ` Paul Tarjan
2026-02-21 17:07 ` Junio C Hamano
2026-02-23 6:34 ` Patrick Steinhardt
2026-02-23 15:42 ` Junio C Hamano
2026-02-23 15:46 ` Patrick Steinhardt
2026-02-24 1:34 ` Paul Tarjan
2026-02-24 8:03 ` Patrick Steinhardt
2026-02-24 1:31 ` [PATCH v5] " Paul Tarjan via GitGitGadget
2026-02-24 8:03 ` Patrick Steinhardt
2026-02-25 20:17 ` [PATCH v6 00/10] " Paul Tarjan via GitGitGadget
2026-02-25 20:17 ` [PATCH v6 01/10] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-02-25 21:01 ` Junio C Hamano
2026-02-25 20:17 ` [PATCH v6 02/10] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-02-25 20:17 ` [PATCH v6 03/10] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-02-25 20:17 ` [PATCH v6 04/10] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-02-25 21:13 ` Junio C Hamano
2026-02-27 6:31 ` Paul Tarjan
2026-02-27 16:44 ` Junio C Hamano
2026-02-28 0:28 ` Paul Tarjan
2026-02-25 21:17 ` Junio C Hamano
2026-02-27 6:31 ` Paul Tarjan
2026-02-25 20:17 ` [PATCH v6 05/10] fsmonitor: deduplicate IPC path logic for Unix platforms Paul Tarjan via GitGitGadget
2026-02-25 21:30 ` Junio C Hamano
2026-02-27 6:31 ` Paul Tarjan
2026-02-25 20:17 ` [PATCH v6 06/10] fsmonitor: deduplicate settings " Paul Tarjan via GitGitGadget
2026-02-25 21:31 ` Junio C Hamano
2026-02-27 6:31 ` Paul Tarjan
2026-02-25 20:17 ` [PATCH v6 07/10] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-02-25 20:17 ` [PATCH v6 08/10] fsmonitor: add tests " Paul Tarjan via GitGitGadget
2026-02-25 20:17 ` [PATCH v6 09/10] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-02-25 21:41 ` Junio C Hamano
2026-02-25 20:17 ` [PATCH v6 10/10] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-02-26 0:27 ` [PATCH v7 00/10] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-02-26 0:27 ` [PATCH v7 01/10] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-03-04 7:42 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 02/10] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-03-04 7:42 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 03/10] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-03-04 7:42 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 04/10] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-03-04 7:42 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 05/10] fsmonitor: deduplicate IPC path logic for Unix platforms Paul Tarjan via GitGitGadget
2026-03-04 7:42 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 06/10] fsmonitor: deduplicate settings " Paul Tarjan via GitGitGadget
2026-03-04 7:43 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 07/10] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-04 7:43 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 08/10] fsmonitor: add tests " Paul Tarjan via GitGitGadget
2026-03-04 7:43 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 0:27 ` [PATCH v7 09/10] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-02-26 0:27 ` [PATCH v7 10/10] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-03-04 7:43 ` Patrick Steinhardt
2026-03-04 18:17 ` Paul Tarjan
2026-02-26 15:34 ` [PATCH v7 00/10] fsmonitor: implement filesystem change listener for Linux Junio C Hamano
2026-03-04 18:15 ` [PATCH v8 00/12] " Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 01/12] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 02/12] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 03/12] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 04/12] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 05/12] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 06/12] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 07/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 08/12] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-03-04 20:51 ` Junio C Hamano
2026-03-05 0:49 ` [PATCH v8 09/12] " Paul Tarjan
2026-03-05 4:13 ` Junio C Hamano
2026-03-05 6:38 ` [PATCH v9 09/12] run-command: add pre-exec callback for child processes Paul Tarjan
2026-03-04 18:15 ` [PATCH v8 09/12] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 10/12] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 11/12] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-03-04 18:15 ` [PATCH v8 12/12] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 00/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 01/12] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 02/12] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 03/12] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 04/12] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 05/12] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 06/12] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 07/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 08/12] run-command: add pre-exec callback for child processes Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 09/12] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 10/12] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-03-05 0:51 ` [PATCH v9 11/12] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-03-05 0:52 ` [PATCH v9 12/12] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 00/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 01/12] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 02/12] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 03/12] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 04/12] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 05/12] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 06/12] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 07/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 08/12] run-command: add pre-exec callback for child processes Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 09/12] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 10/12] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 11/12] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-03-05 1:16 ` [PATCH v10 12/12] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 00/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 01/12] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 02/12] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 03/12] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 04/12] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 05/12] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 06/12] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 07/12] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 08/12] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 09/12] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 10/12] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 11/12] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-03-05 6:55 ` [PATCH v11 12/12] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-03-05 7:37 ` [PATCH v11 00/12] fsmonitor: implement filesystem change listener for Linux Patrick Steinhardt
2026-03-05 14:15 ` Paul Tarjan
2026-03-25 20:00 ` Junio C Hamano
2026-03-29 4:47 ` [PATCH v11 0/8] fsmonitor: add Linux support using inotify Paul Tarjan
2026-03-30 11:40 ` [PATCH v11 00/12] fsmonitor: implement filesystem change listener for Linux Patrick Steinhardt
2026-03-31 3:34 ` Junio C Hamano
2026-03-31 6:17 ` [PATCH v11 0/8] fsmonitor: add Linux support using inotify Paul Tarjan
2026-03-31 16:05 ` Junio C Hamano
2026-03-31 6:19 ` [PATCH v12 00/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 01/13] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 02/13] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 03/13] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 04/13] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 05/13] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 06/13] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 07/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 08/13] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 09/13] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 10/13] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 11/13] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 12/13] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-03-31 6:19 ` [PATCH v12 13/13] fsmonitor: fix split-index bitmap bounds in tweak_fsmonitor() Paul Tarjan via GitGitGadget
2026-03-31 16:37 ` Junio C Hamano
2026-03-31 17:55 ` Junio C Hamano
2026-04-01 4:19 ` Paul Tarjan
2026-04-08 4:26 ` [PATCH v13 01/13] t9210: disable GIT_TEST_SPLIT_INDEX for scalar clone tests Paul Tarjan
2026-04-04 22:10 ` Johannes Schindelin [this message]
2026-04-05 5:15 ` [PATCH v12 13/13] fsmonitor: fix split-index bitmap bounds in tweak_fsmonitor() Paul Tarjan
2026-04-05 9:26 ` Johannes Schindelin
2026-04-05 17:25 ` Paul Tarjan
2026-04-06 16:51 ` Junio C Hamano
2026-04-06 17:54 ` [PATCH v13 00/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 01/13] t9210: disable GIT_TEST_SPLIT_INDEX for scalar clone tests Paul Tarjan via GitGitGadget
2026-04-07 19:07 ` Junio C Hamano
2026-04-07 19:09 ` Junio C Hamano
2026-04-06 17:54 ` [PATCH v13 02/13] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 03/13] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 04/13] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 05/13] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 06/13] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 07/13] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 08/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 09/13] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 10/13] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 11/13] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 12/13] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-04-06 17:54 ` [PATCH v13 13/13] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 00/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 01/13] t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 02/13] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 03/13] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 04/13] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 05/13] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 06/13] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 07/13] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 08/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 09/13] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 10/13] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 11/13] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-04-09 4:59 ` [PATCH v14 12/13] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-04-14 20:20 ` SZEDER Gábor
2026-04-14 20:40 ` Junio C Hamano
2026-04-14 22:13 ` Jeff King
2026-04-09 4:59 ` [PATCH v14 13/13] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-04-09 18:04 ` [PATCH v14 00/13] fsmonitor: implement filesystem change listener for Linux Junio C Hamano
2026-04-15 13:27 ` [PATCH v15 " Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 01/13] t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 02/13] fsmonitor: fix khash memory leak in do_handle_client Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 03/13] fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 04/13] compat/win32: add pthread_cond_timedwait Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 05/13] fsmonitor: use pthread_cond_timedwait for cookie wait Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 06/13] fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 07/13] fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 08/13] fsmonitor: implement filesystem change listener for Linux Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 09/13] run-command: add close_fd_above_stderr option Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 10/13] fsmonitor: close inherited file descriptors and detach in daemon Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 11/13] fsmonitor: add timeout to daemon stop command Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 12/13] fsmonitor: add tests for Linux Paul Tarjan via GitGitGadget
2026-04-15 13:27 ` [PATCH v15 13/13] fsmonitor: convert shown khash to strset in do_handle_client Paul Tarjan via GitGitGadget
2026-04-15 17:50 ` [PATCH v15 00/13] fsmonitor: implement filesystem change listener for Linux Ben Knoble
2026-04-15 18:43 ` Junio C Hamano
2026-04-15 21:17 ` Ben Knoble
2026-05-12 6:26 ` Junio C Hamano
2026-05-12 20:36 ` D. Ben Knoble
2026-04-15 18:07 ` Junio C Hamano
2025-12-30 15:37 ` [PATCH v2] " Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b96ed977-525e-c3fc-a626-db1a4b3da376@gmx.de \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=github@paulisageek.com \
--cc=paul@paultarjan.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox