Details
-
Bug
-
Resolution: Fixed
-
Minor
-
Lustre 2.12.5, Lustre 2.15.1
-
None
-
Affected Client OSes: CentOS 7.8.2003, Rocky Linux release 9.1
Kernels: 5.14.0-162.12.1.el9_1.0.2.x86_64, 3.10.0-1127.8.2.el7.x86_64
Description
The following sequence has a strange issue that does not affect all clients:
sesser@hercules-login-1 sesser$touch a; mkdir test; touch test; ln -svf $(pwd)/a test/
ln: test/: cannot overwrite directory
sesser@hercules-login-1 sesser$ln -svf $(pwd)/a test/
'test/a' -> '/work2/hpc/users/sesser/a'
sesser@hercules-login-1 sesser$ln -svf $(pwd)/a test/
'test/a' -> '/work2/hpc/users/sesser/a'
sesser@hercules-login-1 sesser$touch test; ln -svf $(pwd)/a test/
ln: test/: cannot overwrite directory
sesser@hercules-login-1 sesser$touch test; ln -svf $(pwd)/a test/
ln: test/: cannot overwrite directory
sesser@hercules-login-1 sesser$touch test; ls -l; ln -svf $(pwd)/a test/
total 16
rw-r---- 1 sesser admin 0 Jan 5 16:48 a
drwxr-x--- 2 sesser admin 16384 Jan 5 16:48 test
'test/a' -> '/work2/hpc/users/sesser/a'
Issuing the following outputs this:
touch test; strace ln -svf $(pwd)/a test/
symlinkat("/work2/hpc/users/sesser/a", AT_FDCWD, "test/") = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "test/",
, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, "/usr/share/locale/C.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/C.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/C/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "ln: ", 4ln: ) = 4
write(2, "test/: cannot overwrite director"..., 33test/: cannot overwrite directory) = 33
write(2, "\n", 1
) = 1
lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(1) = ?
+++ exited with 1 +++
This is a vendor agnostic problem, as we tested this on another system from a different vendor, and the results are the same. Some clients do behave as expected though.
Client Details that Work Correctly:
Client Type 1:
- OS: CentOS 7.6.1810
- Kernel: 3.10.0-957.27.2.el7.x86_64
- Lustre Version: 2.12.8_ddn9
- Mount Options: defaults, _netdev, user_xattr, flock
Client Type 2:
- OS: CentOS 7.8.2003
- Kernel: 3.10.0-1127.8.2.el7.x86_64
- Lustre Version: 2.12.5
- Mount Options: defaults, _netdev, user_xattr, flock
Client Details that do not Work Correctly:
Client Type 3:
- OS: CentOS 7.8.2003
- Kernel: 3.10.0-1127.8.2.el7.x86_64
- Lustre Version: 2.15.6
- Mount Options: defaults, _netdev, user_xattr, flock
Client Type 4:
- Rocky 9.1
- Kernel: 5.14.0-162.12.1.el9_1.0.2.x86_64
- Lustre Version: 12.15.1
- Mount Options: defaults, _netdev, user_xattr, flock
All clients were built using the following commands:
./configure --disable-server --enable-quota --enable-mpitests=no
make
make check
make rpms
yum -y install *.rpms
John, it would be useful if you submitted a test patch yourself, both because we don't have anyone available right now that can work on this issue, and also because it is good to have more external contributors to the project. Having a good test case to reproduce the problem is the first step in fixing the issue.
It looks like sanity.sh test_17* have the symlink tests, and the next one would be test_17p.