From: "Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Patrick Steinhardt" <ps@pks.im>,
"Jeff Hostetler" <git@jeffhostetler.com>,
"Torsten Bögershausen" <tboegi@web.de>,
"Jeff Hostetler" <jeffhostetler@github.com>
Subject: [PATCH v3 00/14] FSMonitor edge cases on case-insensitive file systems
Date: Mon, 26 Feb 2024 21:39:11 +0000 [thread overview]
Message-ID: <pull.1662.v3.git.1708983565.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1662.v2.git.1708658300.gitgitgadget@gmail.com>
Here is version 3. I think I have addressed the remaining comments.
I cleaned up the test code to use the test_expect_failure at the beginning
and squashed in the test_expect_success version of tests into the final
commit in the series.
I moved the invalidate_ce_fsm() commit earlier in the series, so that the
final commit actually uses all of the up-to-this-point changes to fix the
problem.
I converted a few "should not happens" to BUG()s.
Thanks to everyone for their time and attention reviewing this. Jeff
Jeff Hostetler (14):
name-hash: add index_dir_find()
t7527: add case-insensitve test for FSMonitor
fsmonitor: refactor refresh callback on directory events
fsmonitor: clarify handling of directory events in callback helper
fsmonitor: refactor refresh callback for non-directory events
dir: create untracked_cache_invalidate_trimmed_path()
fsmonitor: refactor untracked-cache invalidation
fsmonitor: move untracked-cache invalidation into helper functions
fsmonitor: return invalidated cache-entry count on directory event
fsmonitor: remove custom loop from non-directory path handler
fsmonitor: return invalided cache-entry count on non-directory event
fsmonitor: trace the new invalidated cache-entry count
fsmonitor: refactor bit invalidation in refresh callback
fsmonitor: support case-insensitive events
dir.c | 20 +++
dir.h | 7 +
fsmonitor.c | 312 +++++++++++++++++++++++++++++------
name-hash.c | 9 +-
name-hash.h | 7 +-
t/t7527-builtin-fsmonitor.sh | 223 +++++++++++++++++++++++++
6 files changed, 522 insertions(+), 56 deletions(-)
base-commit: f41f85c9ec8d4d46de0fd5fded88db94d3ec8c11
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1662%2Fjeffhostetler%2Ffsmonitor-ignore-case-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1662/jeffhostetler/fsmonitor-ignore-case-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1662
Range-diff vs v2:
1: 03b07d9c25e ! 1: 64ae07aaeaa name-hash: add index_dir_find()
@@ Metadata
## Commit message ##
name-hash: add index_dir_find()
- Replace the index_dir_exists() function with index_dir_find() and
- change the API to take an optional strbuf to return the canonical
- spelling of the matched directory prefix.
+ index_dir_exists() returns a boolean to indicate if there is a
+ case-insensitive match in the directory name-hash, but does not
+ provide the caller with the exact spelling of that match.
- Create an index_dir_exists() wrapper macro for existing callers.
+ Create index_dir_find() to do the case-insensitive search *and*
+ optionally return the spelling of the matched directory prefix in a
+ provided strbuf.
- The existing index_dir_exists() returns a boolean to indicate if
- there is a case-insensitive match in the directory name-hash, but
- it doesn't tell the caller the exact spelling of that match.
-
- The new version also copies the matched spelling to a provided strbuf.
- This lets the caller, for example, then call index_name_pos() with the
- correct case to search the cache-entry array for the real insertion
- position.
+ To avoid code duplication, convert index_dir_exists() to be a trivial
+ wrapper around the new index_dir_find().
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
2: 7778cee1c10 ! 2: beeebf55963 t7527: add case-insensitve test for FSMonitor
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'split-index and FSMonitor wor
+#
+# The setup is a little contrived.
+#
-+test_expect_success CASE_INSENSITIVE_FS 'fsmonitor subdir case wrong on disk' '
++test_expect_failure CASE_INSENSITIVE_FS 'fsmonitor subdir case wrong on disk' '
+ test_when_finished "stop_daemon_delete_repo subdir_case_wrong" &&
+
+ git init subdir_case_wrong &&
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'split-index and FSMonitor wor
+ grep -q " M AAA" "$PWD/subdir_case_wrong.out" &&
+ grep -q " M zzz" "$PWD/subdir_case_wrong.out" &&
+
-+ # However, with the fsmonitor client bug, the "(pos -3)" causes
-+ # the client to not update the bit and never rescan the file
-+ # and therefore not report it as dirty.
-+ ! grep -q " M dir1/dir2/dir3/file3" "$PWD/subdir_case_wrong.out"
++ # Expect Breakage: with the case confusion, the "(pos -3)" causes
++ # the client to not clear the CE_FSMONITOR_VALID bit and therefore
++ # status will not rescan the file and therefore not report it as dirty.
++ grep -q " M dir1/dir2/dir3/file3" "$PWD/subdir_case_wrong.out"
+'
+
-+test_expect_success CASE_INSENSITIVE_FS 'fsmonitor file case wrong on disk' '
++test_expect_failure CASE_INSENSITIVE_FS 'fsmonitor file case wrong on disk' '
+ test_when_finished "stop_daemon_delete_repo file_case_wrong" &&
+
+ git init file_case_wrong &&
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'split-index and FSMonitor wor
+ grep -q "fsmonitor_refresh_callback.*FILE-3-A.*pos -3" "$PWD/file_case_wrong-try3.log" &&
+ grep -q "fsmonitor_refresh_callback.*file-4-a.*pos -9" "$PWD/file_case_wrong-try3.log" &&
+
-+ # Status should say these files are modified, but with the case
-+ # bug, the "pos -3" cause the client to not update the FSM bit
-+ # and never cause the file to be rescanned and therefore to not
-+ # report it dirty.
-+ ! grep -q " M dir1/dir2/dir3/file-3-a" "$PWD/file_case_wrong-try3.out" &&
-+ ! grep -q " M dir1/dir2/dir4/FILE-4-A" "$PWD/file_case_wrong-try3.out"
++ # Expect Breakage: with the case confusion, the "(pos-3)" and
++ # "(pos -9)" causes the client to not clear the CE_FSMONITOR_VALID
++ # bit and therefore status will not rescan the files and therefore
++ # not report them as dirty.
++ grep -q " M dir1/dir2/dir3/file-3-a" "$PWD/file_case_wrong-try3.out" &&
++ grep -q " M dir1/dir2/dir4/FILE-4-A" "$PWD/file_case_wrong-try3.out"
+'
+
test_done
3: dad079ade7f < -: ----------- t7527: temporarily disable case-insensitive tests
4: 5516670e30e = 3: 518cb4dd5df fsmonitor: refactor refresh callback on directory events
5: c04fd4eae94 = 4: 9a4b5bf990b fsmonitor: clarify handling of directory events in callback helper
6: 7ee6ca1aefd ! 5: 348b9b0c94e fsmonitor: refactor refresh callback for non-directory events
@@ Metadata
## Commit message ##
fsmonitor: refactor refresh callback for non-directory events
- Move the code handle unqualified FSEvents (without a trailing slash)
- into a helper function.
+ Move the code that handles unqualified FSEvents (without a trailing
+ slash) into a helper function.
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
7: 99c0d3e0742 ! 6: ed735e3f1cb dir: create untracked_cache_invalidate_trimmed_path()
@@ dir.c: void untracked_cache_invalidate_path(struct index_state *istate,
+ size_t len = strlen(path);
+
+ if (!len)
-+ return; /* should not happen */
++ BUG("untracked_cache_invalidate_trimmed_path given zero length path");
+
+ if (path[len - 1] != '/') {
+ untracked_cache_invalidate_path(istate, path, safe_path);
8: f2d6765d84f = 7: 2a43c6cbe0d fsmonitor: refactor untracked-cache invalidation
9: af6f57ab3e6 ! 8: 6e87ea6deaf fsmonitor: move untracked invalidation into helper functions
@@ Metadata
Author: Jeff Hostetler <jeffhostetler@github.com>
## Commit message ##
- fsmonitor: move untracked invalidation into helper functions
+ fsmonitor: move untracked-cache invalidation into helper functions
- Move the call to invalidate the untracked cache for the FSEvent
+ Move the call to invalidate the untracked-cache for the FSEvent
pathname into the two helper functions.
In a later commit in this series, we will call these helpers
from other contexts and it safer to include the UC invalidation
- in the helper than to remember to also add it to each helper
+ in the helpers than to remember to also add it to each helper
call-site.
+ This has the side-effect of invalidating the UC *before* we
+ invalidate the ce_flags in the cache-entry. These activities
+ are independent and do not affect each other. Also, by doing
+ the UC work first, we can avoid worrying about "early returns"
+ or the need for the usual "goto the end" in each of the
+ handler functions.
+
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
## fsmonitor.c ##
10: 623c6f06e21 = 9: 5fea8b9476e fsmonitor: return invalidated cache-entry count on directory event
11: 1853f77d333 = 10: 3fa7536cf80 fsmonitor: remove custom loop from non-directory path handler
12: f77d68c78ad ! 11: 53f73c1515d fsmonitor: return invalided cache-entry count on non-directory event
@@ Metadata
## Commit message ##
fsmonitor: return invalided cache-entry count on non-directory event
- Teah the refresh callback helper function for unqualified FSEvents
+ Teach the refresh callback helper function for unqualified FSEvents
(pathnames without a trailing slash) to return the number of
cache-entries that were invalided in response to the event.
13: 58b36673e15 = 12: 0148319aea5 fsmonitor: trace the new invalidated cache-entry count
15: 3a20065dbf8 ! 13: 04867eccfcd fsmonitor: refactor bit invalidation in refresh callback
@@ Commit message
it to help debug edge cases.
This is similar to the existing `mark_fsmonitor_invalid()` function,
- but we don't need the extra stuff that it does.
+ but it also does untracked-cache invalidation and we've already
+ handled that in the refresh-callback handlers, so but we don't need
+ to repeat that.
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
## fsmonitor.c ##
@@ fsmonitor.c: static int query_fsmonitor_hook(struct repository *r,
- static size_t handle_path_with_trailing_slash(
- struct index_state *istate, const char *name, int pos);
+ return result;
+ }
+/*
+ * Invalidate the FSM bit on this CE. This is like mark_fsmonitor_invalid()
-+ * but we've already handled the untracked-cache and I want a different
-+ * trace message.
++ * but we've already handled the untracked-cache, so let's not repeat that
++ * work. This also lets us have a different trace message so that we can
++ * see everything that was done as part of the refresh-callback.
+ */
+static void invalidate_ce_fsm(struct cache_entry *ce)
+{
-+ if (ce->ce_flags & CE_FSMONITOR_VALID)
++ if (ce->ce_flags & CE_FSMONITOR_VALID) {
+ trace_printf_key(&trace_fsmonitor,
+ "fsmonitor_refresh_callback INV: '%s'",
+ ce->name);
-+ ce->ce_flags &= ~CE_FSMONITOR_VALID;
++ ce->ce_flags &= ~CE_FSMONITOR_VALID;
++ }
+}
+
- /*
- * Use the name-hash to do a case-insensitive cache-entry lookup with
- * the pathname and invalidate the cache-entry.
-@@ fsmonitor.c: static size_t handle_using_name_hash_icase(
-
- untracked_cache_invalidate_trimmed_path(istate, ce->name, 0);
-
-- ce->ce_flags &= ~CE_FSMONITOR_VALID;
-+ invalidate_ce_fsm(ce);
- return 1;
- }
+ static size_t handle_path_with_trailing_slash(
+ struct index_state *istate, const char *name, int pos);
@@ fsmonitor.c: static size_t handle_path_without_trailing_slash(
* cache-entry with the same pathname, nor for a cone
14: 288f3f4e54e ! 14: ec036c04d1b fsmonitor: support case-insensitive events
@@ Commit message
Update event handling to optionally use the name-hash and dir-name-hash
if necessary.
+ Also update t7527 to convert the "test_expect_failure" to "_success"
+ now that we have fixed the bug.
+
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
## fsmonitor.c ##
@@ fsmonitor.c
#include "run-command.h"
#include "strbuf.h"
#include "trace2.h"
-@@ fsmonitor.c: static int query_fsmonitor_hook(struct repository *r,
+@@ fsmonitor.c: static void invalidate_ce_fsm(struct cache_entry *ce)
static size_t handle_path_with_trailing_slash(
struct index_state *istate, const char *name, int pos);
@@ fsmonitor.c: static int query_fsmonitor_hook(struct repository *r,
+ "fsmonitor_refresh_callback MAP: '%s' '%s'",
+ name, ce->name);
+
++ /*
++ * NEEDSWORK: We used the name-hash to find the correct
++ * case-spelling of the pathname in the cache-entry[], so
++ * technically this is a tracked file or a sparse-directory.
++ * It should not have any entries in the untracked-cache, so
++ * we should not need to use the case-corrected spelling to
++ * invalidate the the untracked-cache. So we may not need to
++ * do this. For now, I'm going to be conservative and always
++ * do it; we can revisit this later.
++ */
+ untracked_cache_invalidate_trimmed_path(istate, ce->name, 0);
+
-+ ce->ce_flags &= ~CE_FSMONITOR_VALID;
++ invalidate_ce_fsm(ce);
+ return 1;
+}
+
@@ fsmonitor.c: static int query_fsmonitor_hook(struct repository *r,
+ * ICASE match, so we should never get an exact match,
+ * so we could promote this to a BUG() here if we
+ * wanted to. It doesn't hurt anything to just return
-+ * 0 and go on becaus we should never get here. Or we
++ * 0 and go on because we should never get here. Or we
+ * could just get rid of the memcmp() and this "if"
+ * clause completely.
+ */
-+ return 0; /* should not happen */
++ BUG("handle_using_dir_name_hash_icase(%s) did not exact match",
++ name);
+ }
+
+ trace_printf_key(&trace_fsmonitor,
@@ fsmonitor.c: static void fsmonitor_refresh_callback(struct index_state *istate,
if (nr_in_cone)
trace_printf_key(&trace_fsmonitor,
"fsmonitor_refresh_callback CNT: %d",
+
+ ## t/t7527-builtin-fsmonitor.sh ##
+@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'split-index and FSMonitor work well together' '
+ #
+ # The setup is a little contrived.
+ #
+-test_expect_failure CASE_INSENSITIVE_FS 'fsmonitor subdir case wrong on disk' '
++test_expect_success CASE_INSENSITIVE_FS 'fsmonitor subdir case wrong on disk' '
+ test_when_finished "stop_daemon_delete_repo subdir_case_wrong" &&
+
+ git init subdir_case_wrong &&
+@@ t/t7527-builtin-fsmonitor.sh: test_expect_failure CASE_INSENSITIVE_FS 'fsmonitor subdir case wrong on disk' '
+
+ grep -q "dir1/DIR2/dir3/file3.*pos -3" "$PWD/subdir_case_wrong.log1" &&
+
++ # Verify that we get a mapping event to correct the case.
++ grep -q "MAP:.*dir1/DIR2/dir3/file3.*dir1/dir2/dir3/file3" \
++ "$PWD/subdir_case_wrong.log1" &&
++
+ # The refresh-callbacks should have caused "git status" to clear
+ # the CE_FSMONITOR_VALID bit on each of those files and caused
+ # the worktree scan to visit them and mark them as modified.
+ grep -q " M AAA" "$PWD/subdir_case_wrong.out" &&
+ grep -q " M zzz" "$PWD/subdir_case_wrong.out" &&
+-
+- # Expect Breakage: with the case confusion, the "(pos -3)" causes
+- # the client to not clear the CE_FSMONITOR_VALID bit and therefore
+- # status will not rescan the file and therefore not report it as dirty.
+ grep -q " M dir1/dir2/dir3/file3" "$PWD/subdir_case_wrong.out"
+ '
+
+-test_expect_failure CASE_INSENSITIVE_FS 'fsmonitor file case wrong on disk' '
++test_expect_success CASE_INSENSITIVE_FS 'fsmonitor file case wrong on disk' '
+ test_when_finished "stop_daemon_delete_repo file_case_wrong" &&
+
+ git init file_case_wrong &&
+@@ t/t7527-builtin-fsmonitor.sh: test_expect_failure CASE_INSENSITIVE_FS 'fsmonitor file case wrong on disk' '
+ GIT_TRACE_FSMONITOR="$PWD/file_case_wrong-try3.log" \
+ git -C file_case_wrong --no-optional-locks status --short \
+ >"$PWD/file_case_wrong-try3.out" &&
++
++ # Verify that we get a mapping event to correct the case.
++ grep -q "fsmonitor_refresh_callback MAP:.*dir1/dir2/dir3/FILE-3-A.*dir1/dir2/dir3/file-3-a" \
++ "$PWD/file_case_wrong-try3.log" &&
++ grep -q "fsmonitor_refresh_callback MAP:.*dir1/dir2/dir4/file-4-a.*dir1/dir2/dir4/FILE-4-A" \
++ "$PWD/file_case_wrong-try3.log" &&
++
+ # FSEvents are in observed case.
+ grep -q "fsmonitor_refresh_callback.*FILE-3-A.*pos -3" "$PWD/file_case_wrong-try3.log" &&
+ grep -q "fsmonitor_refresh_callback.*file-4-a.*pos -9" "$PWD/file_case_wrong-try3.log" &&
+
+- # Expect Breakage: with the case confusion, the "(pos-3)" and
+- # "(pos -9)" causes the client to not clear the CE_FSMONITOR_VALID
+- # bit and therefore status will not rescan the files and therefore
+- # not report them as dirty.
++ # The refresh-callbacks should have caused "git status" to clear
++ # the CE_FSMONITOR_VALID bit on each of those files and caused
++ # the worktree scan to visit them and mark them as modified.
+ grep -q " M dir1/dir2/dir3/file-3-a" "$PWD/file_case_wrong-try3.out" &&
+ grep -q " M dir1/dir2/dir4/FILE-4-A" "$PWD/file_case_wrong-try3.out"
+ '
16: 467d3c1fe2c < -: ----------- t7527: update case-insenstive fsmonitor test
--
gitgitgadget
next prev parent reply other threads:[~2024-02-26 21:39 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-13 20:52 [PATCH 00/12] FSMonitor edge cases on case-insensitive file systems Jeff Hostetler via GitGitGadget
2024-02-13 20:52 ` [PATCH 01/12] sparse-index: pass string length to index_file_exists() Jeff Hostetler via GitGitGadget
2024-02-13 22:07 ` Junio C Hamano
2024-02-20 17:34 ` Jeff Hostetler
2024-02-13 20:52 ` [PATCH 02/12] name-hash: add index_dir_exists2() Jeff Hostetler via GitGitGadget
2024-02-13 21:43 ` Junio C Hamano
2024-02-20 17:38 ` Jeff Hostetler
2024-02-20 19:34 ` Junio C Hamano
2024-02-15 9:31 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 03/12] t7527: add case-insensitve test for FSMonitor Jeff Hostetler via GitGitGadget
2024-02-13 20:52 ` [PATCH 04/12] fsmonitor: refactor refresh callback on directory events Jeff Hostetler via GitGitGadget
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-20 18:54 ` Jeff Hostetler
2024-02-21 12:54 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 05/12] fsmonitor: refactor refresh callback for non-directory events Jeff Hostetler via GitGitGadget
2024-02-14 1:34 ` Junio C Hamano
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 06/12] fsmonitor: clarify handling of directory events in callback Jeff Hostetler via GitGitGadget
2024-02-14 7:47 ` Junio C Hamano
2024-02-20 18:56 ` Jeff Hostetler
2024-02-20 19:24 ` Junio C Hamano
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-20 19:10 ` Jeff Hostetler
2024-02-13 20:52 ` [PATCH 07/12] fsmonitor: refactor untracked-cache invalidation Jeff Hostetler via GitGitGadget
2024-02-14 16:46 ` Junio C Hamano
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 08/12] fsmonitor: support case-insensitive directory events Jeff Hostetler via GitGitGadget
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 09/12] fsmonitor: refactor non-directory callback Jeff Hostetler via GitGitGadget
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 10/12] fsmonitor: support case-insensitive non-directory events Jeff Hostetler via GitGitGadget
2024-02-13 20:52 ` [PATCH 11/12] fsmonitor: refactor bit invalidation in refresh callback Jeff Hostetler via GitGitGadget
2024-02-15 9:32 ` Patrick Steinhardt
2024-02-13 20:52 ` [PATCH 12/12] t7527: update case-insenstive fsmonitor test Jeff Hostetler via GitGitGadget
2024-02-23 3:18 ` [PATCH v2 00/16] FSMonitor edge cases on case-insensitive file systems Jeff Hostetler via GitGitGadget
2024-02-23 3:18 ` [PATCH v2 01/16] name-hash: add index_dir_find() Jeff Hostetler via GitGitGadget
2024-02-23 6:37 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 02/16] t7527: add case-insensitve test for FSMonitor Jeff Hostetler via GitGitGadget
2024-02-23 3:18 ` [PATCH v2 03/16] t7527: temporarily disable case-insensitive tests Jeff Hostetler via GitGitGadget
2024-02-23 8:17 ` Junio C Hamano
2024-02-26 17:12 ` Jeff Hostetler
2024-02-23 3:18 ` [PATCH v2 04/16] fsmonitor: refactor refresh callback on directory events Jeff Hostetler via GitGitGadget
2024-02-23 8:18 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 05/16] fsmonitor: clarify handling of directory events in callback helper Jeff Hostetler via GitGitGadget
2024-02-23 3:18 ` [PATCH v2 06/16] fsmonitor: refactor refresh callback for non-directory events Jeff Hostetler via GitGitGadget
2024-02-23 8:18 ` Junio C Hamano
2024-02-25 12:30 ` Torsten Bögershausen
2024-02-25 17:24 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 07/16] dir: create untracked_cache_invalidate_trimmed_path() Jeff Hostetler via GitGitGadget
2024-02-25 12:35 ` Torsten Bögershausen
2024-02-23 3:18 ` [PATCH v2 08/16] fsmonitor: refactor untracked-cache invalidation Jeff Hostetler via GitGitGadget
2024-02-23 3:18 ` [PATCH v2 09/16] fsmonitor: move untracked invalidation into helper functions Jeff Hostetler via GitGitGadget
2024-02-23 17:36 ` Junio C Hamano
2024-02-26 18:45 ` Jeff Hostetler
2024-02-23 3:18 ` [PATCH v2 10/16] fsmonitor: return invalidated cache-entry count on directory event Jeff Hostetler via GitGitGadget
2024-02-23 3:18 ` [PATCH v2 11/16] fsmonitor: remove custom loop from non-directory path handler Jeff Hostetler via GitGitGadget
2024-02-23 17:47 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 12/16] fsmonitor: return invalided cache-entry count on non-directory event Jeff Hostetler via GitGitGadget
2024-02-23 17:51 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 13/16] fsmonitor: trace the new invalidated cache-entry count Jeff Hostetler via GitGitGadget
2024-02-23 17:53 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 14/16] fsmonitor: support case-insensitive events Jeff Hostetler via GitGitGadget
2024-02-23 18:14 ` Junio C Hamano
2024-02-26 20:41 ` Jeff Hostetler
2024-02-26 21:18 ` Junio C Hamano
2024-02-25 13:10 ` Torsten Bögershausen
2024-02-26 20:47 ` Jeff Hostetler
2024-02-23 3:18 ` [PATCH v2 15/16] fsmonitor: refactor bit invalidation in refresh callback Jeff Hostetler via GitGitGadget
2024-02-23 18:18 ` Junio C Hamano
2024-02-23 3:18 ` [PATCH v2 16/16] t7527: update case-insenstive fsmonitor test Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` Jeff Hostetler via GitGitGadget [this message]
2024-02-26 21:39 ` [PATCH v3 01/14] name-hash: add index_dir_find() Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 02/14] t7527: add case-insensitve test for FSMonitor Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 03/14] fsmonitor: refactor refresh callback on directory events Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 04/14] fsmonitor: clarify handling of directory events in callback helper Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 05/14] fsmonitor: refactor refresh callback for non-directory events Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 06/14] dir: create untracked_cache_invalidate_trimmed_path() Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 07/14] fsmonitor: refactor untracked-cache invalidation Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 08/14] fsmonitor: move untracked-cache invalidation into helper functions Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 09/14] fsmonitor: return invalidated cache-entry count on directory event Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 10/14] fsmonitor: remove custom loop from non-directory path handler Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 11/14] fsmonitor: return invalided cache-entry count on non-directory event Jeff Hostetler via GitGitGadget
2024-03-06 12:58 ` Patrick Steinhardt
2024-02-26 21:39 ` [PATCH v3 12/14] fsmonitor: trace the new invalidated cache-entry count Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 13/14] fsmonitor: refactor bit invalidation in refresh callback Jeff Hostetler via GitGitGadget
2024-02-26 21:39 ` [PATCH v3 14/14] fsmonitor: support case-insensitive events Jeff Hostetler via GitGitGadget
2024-03-06 12:58 ` Patrick Steinhardt
2024-02-27 1:40 ` [PATCH v3 00/14] FSMonitor edge cases on case-insensitive file systems Junio C Hamano
2024-03-06 12:58 ` Patrick Steinhardt
2024-03-06 17:09 ` Junio C Hamano
2024-03-06 18:10 ` Jeff Hostetler
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1662.v3.git.1708983565.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=jeffhostetler@github.com \
--cc=ps@pks.im \
--cc=tboegi@web.de \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).