Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Fix InodeTable issues revealed by xfstests #44

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

mersinvald
Copy link

@mersinvald mersinvald commented Oct 12, 2023

I am implementing a fuse-fs with a forked fuse-mt, and came across a bug in the inode table replace implementation: when replace is called, the replaced inode retains a record of a path it was originally linked to, and when subsequently kernel orders the filesystem to forget this inode, the path is removed from the by_path table, while being associated with another inode, rendering the table inconsistent. This later causes a panic on Option::unwrap in a subsequent rename.

The bug is reliably reproduced by the test generic/011 in the xfstests (repo)


generic/013 fails in a similar fashion, added a second commit fixing that.

P.S putting a WIP status on the PR, as I now realize there may be other bugs around inode_table, that are worth fixing in the same PR.

@mersinvald mersinvald changed the title Unlink the new path from the replaced inode in rename WIP: Unlink the new path from the replaced inode in rename Oct 12, 2023
@mersinvald mersinvald changed the title WIP: Unlink the new path from the replaced inode in rename WIP: Fix InodeTable issues revealed by xfstests Oct 12, 2023
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