bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: coreutils-6.2: various runtime problems on Darwin-8.7.0 HFS+ (includ


From: Jim Meyering
Subject: Re: coreutils-6.2: various runtime problems on Darwin-8.7.0 HFS+ (including attachment this time)
Date: Tue, 26 Sep 2006 22:32:41 +0200

mwoehlke <address@hidden> wrote:
>> Would you please try this, to confirm the theory:
>> #!/bin/bash
>> for i in $(seq 150 200); do
>>   echo i=$i
>>   mkdir b; (cd b; mkdir $(seq $i) ); Rm -r b || { echo bug at i=$i; break; }
>> done
>> That should find the minimum number of entries for which rm fails.
>
> Nope, that didn't work. I also

Oops.
That should have read "rm", not "Rm",
where "rm" referred to the just-built rm you installed
somewhere early in your path.

>> Once you find that number, say 190, change the enum in your
>> copy of coreutils' src/remove.c that looks like this:
>> [snip]         CONSECUTIVE_READDIR_UNLINK_THRESHOLD = 189
>> Then recompile, and "rm -r" should work.
>
> However...
>
> # using THRESHOLD = 150
> $ tar xzf coreutils-6.3.tar.gz
> $ until /path-to-rm -rf coreutils-6.3 ; do : ; done
> # using THRESHOLD = 200 (default)
> $ tar xzf coreutils-6.3.tar.gz
> $ until /path-to-rm -rf coreutils-6.3 ; do : ; done
> /path-to-rm: cannot remove directory `coreutils-6.3/m4':
> Directory not empty
> /path-to-rm: cannot remove directory `coreutils-6.3/lib':
> Directory not empty
>
> ...so that is definitely the problem. Trying a few more values, I see:
> 150 - works
> 200 - broken
> 175 - works
> 190 - broken (but only in m4, not lib)
> 185 - works
> 188 - broken (same as 190)
> 187 - works
>
> Honestly, I would probably go with 160-ish to be safe. :-)

Thanks.
I'll use 180.
The lower we go, the more of a performance penalty
we impose for directories with very many entries.

Already, in implementing remove.c that way, I've compromised
(however slightly) how GNU rm works in general, for the sake of
working reliably even on such broken file systems.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]