On 2025-10-19 19:18, Collin Funk wrote:

      $ ulimit -n
      1024

It is easy to hit this limit even if you only open file descriptors to
the parents of the file that you want to copy.

(I assume by "parents" you mean "ancestors".)

Yes, and that's why Gnulib fts doesn't do that.


    int
    open_deep (char const *filename, int flags, ...)
    {
...>       /* Loop through the patch components using openat on each
         until we open FILENAME.  */
      return result;

That's O(N * D) if you open N files nested D deep, which is not a good thing. We should be able to do O(N + D).


is there a reason why savewd and
mkancesdirs don't use openat + mkdirat instead of using chdir in a child
process? Do these functions just predate the *at interfaces

Yes, precisely. Some day it will be time to give up on those old platforms, I suppose. We haven't done that yet because there hasn't been motivation to get rid of them, or rewrite them.



Reply via email to