{{ message }}
Repository navigation
Conversation
An inotify watch retains the dentry used to add it even when its watch set belongs to a shared inode. Allowing an unlinked gofer alias to be destroyed while another hard link remains then leaves the watch targeting a dead dentry that cannot be checkpointed. Introduce WatchTarget and use the owning inode in gofer, tmpfs, EROFS, and kernfs. Overlay and anonfs retain their dentry targets. Track inode aliases in gofer and EROFS so removing the last watch rechecks every dentry kept out of the eviction cache. Notify outside gofer's ancestry lock so one-shot cleanup can safely evict other aliases. Preserve gofer watches while another hard link represents the inode. Cover unlinking the watched alias, checkpoint/restore, continued events through a surviving link, and final watch deletion. Add alias cleanup tests for watch removal, inotify close, and one-shot expiry. Tested: affected filesystem unit tests and nogo; full inotify suites on Linux, directfs, shared gofer, overlay, and tmpfs; focused save/restore and lockdep tests. Related to #16024. Assisted-by: Codex
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

An inotify watch retains the dentry used to add it even when its watch set
belongs to a shared inode. Allowing an unlinked gofer alias to be destroyed
while another hard link remains then leaves the watch targeting a dead
dentry that cannot be checkpointed.
Introduce WatchTarget and use the owning inode in gofer, tmpfs, EROFS, and
kernfs. Overlay and anonfs retain their dentry targets. Track inode aliases
in gofer and EROFS so removing the last watch rechecks every dentry kept out
of the eviction cache. Notify outside gofer's ancestry lock so one-shot
cleanup can safely evict other aliases.
Preserve gofer watches while another hard link represents the inode. Cover
unlinking the watched alias, checkpoint/restore, continued events through a
surviving link, and final watch deletion. Add alias cleanup tests for watch
removal, inotify close, and one-shot expiry.
Tested: affected filesystem unit tests and nogo; full inotify suites on
Linux, directfs, shared gofer, overlay, and tmpfs; focused save/restore and
lockdep tests.
Related to #16024.
Assisted-by: Codex