Subject: bug#52410: "mv -T --backup=numbered hello world/" renameat2 infinite loop

From: Vincent Vermilya <[email-masked]>
Date: Fri, 10 Dec 2021 02:22:03 -0800

If DEST directory has a trailing slash in "mv -T --backup=numbered", mv
gets stuck in an infinite loop. This does not happen without the trailing
slash. strace shows renameat2 as the call that gets looped on. This is
tested on coreutils 8.30 Ubuntu 20.04.

Example:
```
mkdir hello hello1 world/
mv -T --backup=numbered hello world/
strace mv -T --backup=numbered hello1 world/ 2>&1 | less
```
less output at infinite loop:
```
renameat2(AT_FDCWD, "world/", 3, "world.~1~", RENAME_NOREPLACE) = -1 EEXIST
(File exists)
lseek(3, 0, SEEK_SET)                   = 0
getdents64(3, /* 39 entries */, 32768)  = 1240
getdents64(3, /* 0 entries */, 32768)   = 0
renameat2(AT_FDCWD, "world/", 3, "world/", RENAME_NOREPLACE) = -1 EEXIST
(File exists)
lseek(3, 0, SEEK_SET)                   = 0
getdents64(3, /* 39 entries */, 32768)  = 1240
getdents64(3, /* 0 entries */, 32768)   = 0
renameat2(AT_FDCWD, "world/", 3, "world/", RENAME_NOREPLACE) = -1 EEXIST
(File exists)
lseek(3, 0, SEEK_SET)                   = 0
getdents64(3, /* 39 entries */, 32768)  = 1240
getdents64(3, /* 0 entries */, 32768)   = 0
```