Skip to content

Conversation

@broady
Copy link

@broady broady commented Feb 9, 2026

When readdirplus populates the kernel dcache with TTL=MAX, the
kernel caches entries indefinitely. After unlink/rmdir/rename the
parent directory's cached readdirplus result can still contain
stale entries on subsequent ls calls.

Fix by sending FUSE_NOTIFY_INVAL_ENTRY after unlink, rmdir, and
rename. Notifications are dispatched from a background thread to
avoid deadlocking the single-threaded session loop.

Add integration test covering unlink, rmdir, rename, create, and
mkdir visibility in subsequent readdir.

@broady broady force-pushed the fix/fuse-cache-invalidation branch 5 times, most recently from 1c51eb1 to 39a7d7b Compare February 9, 2026 07:12
@broady broady marked this pull request as draft February 9, 2026 07:28
@broady broady force-pushed the fix/fuse-cache-invalidation branch from 39a7d7b to 01e992f Compare February 9, 2026 07:50
@broady broady marked this pull request as ready for review February 9, 2026 07:50
When readdirplus populates the kernel dcache with TTL=MAX, the
kernel caches entries indefinitely. After unlink/rmdir/rename the
parent directory's cached readdirplus result can still contain
stale entries on subsequent ls calls.

Fix by sending FUSE_NOTIFY_INVAL_ENTRY after unlink, rmdir, and
rename. Notifications are dispatched from a background thread to
avoid deadlocking the single-threaded session loop.

Add integration test covering unlink, rmdir, rename, create, and
mkdir visibility in subsequent readdir.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant