Details
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