|
From: | Jonny Grant |
Subject: | bug#41001: mkdir: cannot create directory ‘test’: File exists |
Date: | Sun, 3 May 2020 14:02:29 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 |
Hi! On 03/05/2020 00:13, Paul Eggert wrote:
On 5/2/20 3:41 PM, Jonny Grant wrote:Is a more accurate strerror considered unreliable? Current: mkdir: cannot create directory ‘test’: File exists Proposed: mkdir: cannot create directory ‘test’: Is a directoryI don't understand this comment. As I understand it you're proposing a change to the mkdir command not a change to the strerror library function, and the change you're proposing would introduce a race condition to the mkdir command.
As the mkdir error returned to the shell is the same, I don't feel the difference between the words "File exists" and "Is a directory" on the terminal can be considered a race condition.
You're right, there will be a race condition where two processes are both creating and deleting the same files. Any software which is creating and deleting the same directories in parallel will encounter a multitude of errors - all bets are off.
A better fix would be to change the mkdir system call so that it sets errno to EISDIR in this situation. This would fix not only the mkdir utility, but also lots of other programs; and it wouldn't introduce a race condition. So if you're interested in getting the problem fixed, I suggest that you propose such a change to the Linux kernel developers.
Yes, if Linux kernel developers would deviate from POSIX. I emailed address@hidden the lines of code to change.
I'm not confident it will get in, even harder to get into POSIX I expect.ext4_match() is what would need to be updated to check if an entry is a directory
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/ext4/namei.c Cheers, Jonny
[Prev in Thread] | Current Thread | [Next in Thread] |