[Gluster-devel] detected cyclic loop formation during inode linkage

Emmanuel Dreyfus manu at netbsd.org
Thu Aug 9 05:18:43 UTC 2012

Anand Avati <anand.avati at gmail.com> wrote:

> The Linux FUSE does not perform lookup() on ".." but instead looks up the
> parent of cwd's dentry within the kernel module itself. In 3.3 we changed
> the behavior to establish inode on a ".." lookup but neglect dentry
> establishment (since it will form a loop). You might want to
> backport 9bd1b291e3e107250b38d05702df7cd751382bdc to release-3.2 if NetBSD
> FUSE sends ".." lookup.

I would prefer to fix NetBSD FUSE so that it gets closer to Linux
behavior, but that does not look obvious: once its TTL is expired, the
parent node may get INACTIVE/FORGET, therefore we must send a LOOKUP ..
to the filesystem to retreive it again. 

Even if the kernel avoids sending FORGET for nodes that have children,
there are caveats for distributed filesystems: the parent may have been
changed by another client that did a RENAME, therefore I fail to see how
it can always avoid a LOOKUP.

How does it works on Linux? 

Emmanuel Dreyfus
manu at netbsd.org

More information about the Gluster-devel mailing list