Probable bug in renameat2 with RENAME_NOREPLACE on vfat

From: Joshua Hudson
Date: Wed Oct 02 2024 - 20:42:25 EST


System call:

renameat2(AT_FDCWD, "makefile", AT_FDCWD, "Makefile", RENAME_NOREPLACE);

where the current directory is on a vfat filesystem such as a USB stick

Expected return: 0

Actual return: -EEXIST

It's just not right. I really shouldn't have to remove the
RENAME_NOREPLACE to correct the case of a filename. Basically, if
oldname and newname are the same dnode (not just the same inode) the
call should proceed.

I'd rather not lose the race condition safeguard to correct the case
of a file name.