Hi, If we rename the parent-dir to a sub-dir of a specified directory, the rename() syscall return -EINVAL because lock_rename() in lock_rename() checks the relations of the sorece and dest dirs. But if the 'parent' dir is a mountpoint, the rename() syscall return -EXDEV instead because it checks the parent dir's mountpoint of the sorece and dest dirs. For example: Case 1: rename() return -EINVAL # mkdir -p parent/dir # rename parent parent/dir/subdir parent rename: parent: rename to parent/dir/subdir failed: Invalid argument Case 2: rename() return -EXDEV # mkdir parent # mount -t tmpfs test parent # mkdir parent/dir # rename parent parent/dir/subdir parent rename: parent: rename to parent/dir/subdir failed: Invalid cross-device link In case 2, although 'parent' directory is a mountpoint, it acted as a root dir of the "test tmpfs", so it should belongs to the same mounted fs of 'dir' directoty, so I think it shall return -EINVAL. Is it a bug or just designed as this ? Thanks, Yi.