You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here we quote the relevant comments from the discussion. (Some are marked private over there, so they are not visible without sufficient privileges; the comments included here don't carry sensitive data, so they are fine to be published here.)
TL;DR busily performed namespace changing operations from two distinct mounts of the same volume demonstrates insufficient synchronization around namespace operations.
Ambiguous behavior seen while renaming a symlink and having a constant lookup on the second mount point (the volume was mounted on) , MKDIR of the original symlink was not seen on the second mount point.
The directory is seen on the second mount point only after about 20-30 min
Version-Release number of selected component (if applicable):
On one mntpt1 : touch file1 (Create file) --> on mntpt2, do a few lookups
On mntpt1: ln -s file1 400 (Create symlink file) --> on mntpt2, do a few lookups
On mntpt1: mv 400 sym_400 (Rename symlink file) --> on mntpt2, keep doing loopkups
On mntpt1 : mkdir 400 (Create directory with same name as symlink file )--> on mntpt2, do continuous look ups
There were two symlinks on the slave instead of one.
Actual results:
There were 2 symlinks on mntpt2 instead of one
The directory that was created is seen on the slave only after 20-30 min
Expected results:
There should be only 1 symlink on mntpt2 (the renamed symlink) and the directory created in the name of the original symlink (along with the file that was touched)
Comment 19, Raghavendra G, 2018-11-06 06:06:36 UTC
A likely hypothesis for this bug is stale dentries (which can be confirmed once fusedumps are available) in inode table. If the hypothesis turns out to be true, its not a trivial fix to avoid stale dentries. Solutions I can think of are:
strict serialization of entry operations (lookup, rename etc). This approach is not feasible due to performance reasons.
Once ctime xlator is available, fuse can rely on ctime of parent to detect changes to parent directory and discard results of an older operation. For eg., it can identify lookup was issued before rename and hence not link stale dentry after rename. However, ctime xlator is not available by default. Without this trusting on mtime/ctime of stat is not correct as cluster.consistent-metadata won't be turned on always and hence stats could be obtained from different replica pairs.
The text was updated successfully, but these errors were encountered:
Thank you for your contributions.
Noticed that this issue is not having any activity in last ~6 months! We are marking this issue as stale because it has not had recent activity.
It will be closed in 2 weeks if no one responds with a comment here.
This issue is imported from Red Hat Bugzilla. It has no customer impact, so I'm reinstantiating it in community scope.
See https://bugzilla.redhat.com/1600923.
Here we quote the relevant comments from the discussion. (Some are marked private over there, so they are not visible without sufficient privileges; the comments included here don't carry sensitive data, so they are fine to be published here.)
TL;DR busily performed namespace changing operations from two distinct mounts of the same volume demonstrates insufficient synchronization around namespace operations.
Comment 0 (description), Rochelle, 2018-07-13 11:55:59 UTC
Comment 3, Poornima G, 2018-07-20 06:11:23 UTC
Comment 6, Raghavendra G, 2018-07-23 11:27:32 UTC
Comment 7, Rochelle, 2018-07-25 06:42:06 UTC
Comment 19, Raghavendra G, 2018-11-06 06:06:36 UTC
The text was updated successfully, but these errors were encountered: