Details
-
Improvement
-
Resolution: Fixed
-
Major
-
Lustre 2.8.0, Lustre 2.13.0, Lustre 2.10.6
-
None
-
9223372036854775807
Description
Migrating a symlink should not leave a remote agent inode on the original MDT in the extremely common case where there is not a hardlink to the symlink (apparently that is possible under POSIX and Linux allows it, who knew?):
touch tt $ ln -s tt tt.link $ ln -n tt.link tt.nlink $ ls -li tt* 408143 0 -rw-rw-r-- 1 mythtv mythtv 0 Nov 6 13:02 tt 408146 0 lrwxrwxrwx 2 mythtv mythtv 2 Nov 6 13:02 tt.hlink -> tt 408146 0 lrwxrwxrwx 2 mythtv mythtv 2 Nov 6 13:02 tt.link -> tt
Since we can never hold symlinks open and they can never be modified in place (except for renaming them) there is no danger to move the whole symlink to the new MDT during rename instead of leaving a stub agent inode on the original MDT, except in the rare case where the link count > 1.