I have created several files with random names in a directory (around 500). The time required to remove them is negligible. Then, I have created the same number of files, but giving them only 55 different crc32c values. The time required to remove them is so large that I was not able to figure it out and killed the process after 220 minutes (!).
Ordinarily, I don’t think repeating small quotes adds much to the discussion, but… holy shit. That’s far worse than falling back to linear performance. That’s falling back to broken.
On the kinda bright side, the ufs dirhash code in OpenBSD and FreeBSD has a worst case linear behavior, but that’s exactly what you get without the directory hashing anyway.
I have created several files with random names in a directory (around 500). The time required to remove them is negligible. Then, I have created the same number of files, but giving them only 55 different crc32c values. The time required to remove them is so large that I was not able to figure it out and killed the process after 220 minutes (!).
Ordinarily, I don’t think repeating small quotes adds much to the discussion, but… holy shit. That’s far worse than falling back to linear performance. That’s falling back to broken.
On the kinda bright side, the ufs dirhash code in OpenBSD and FreeBSD has a worst case linear behavior, but that’s exactly what you get without the directory hashing anyway.