|
From: Satya P. GS <g.s...@gm...> - 2018-07-18 08:12:55
|
Hi, Ours is a distributed filesystem and we are using fuse to access our filesystem locally. Inode numbers in our filesystem get reused, however our filesystem has a concept similar to generation number which gets bumped up on every reuse. Our inode numbers are bigger than 8-bytes and we coulnd't squeeze in the generation number into the ino that we serve fuse kernel. Inode numbers created by one fuse node could potentially be deleted by the other node. This leads to EBUSY errors in mkdir (mkdir does "do I know this inode check. If kernel thinks it knows this inode then it complains that the inode is busy"). One way to fix this issue is by maintaining a replica of the kernel dentry cache in our userspace. Every time I serve the inode I should first check if this inode exists in the userspace cache and if it does, then do fuse_lowlevel_notify_inval_entry on that dentry. However, things could get a lot simpler if the generation number served in mkdir is used in resolving conflicts in kernel. Is this already addressed. If so, kindly tell me which release has this fix. We are currently in 2.7 and we cherry-picked few fixes from 2.9. Thanks, Satya. |