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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.