Messages in this thread | | | Date | 12 Feb 2006 10:16:16 -0500 | From | linux@horizon ... | Subject | Re: max symlink = 5? ?bug? ?feature deficit? |
| |
That limit should be a *recursion* limit only. Symlinks in the last component of a path are looked up iteratively (to save kernel stack space), but a symlink in the middle of a path can't be done tail-recursively.
E.g. in your example
> namei cpu/args.t f: cpu/args.t d cpu l args.t -> ../op/args.t d .. l op -> ../t/op/ d .. l t -> perldir/t l perldir -> perl-5.8.6 l perl-5.8.6 -> ../build/perl-5.8.6 d .. l build -> BUILD d BUILD d perl-5.8.6 d t d op - args.t
Wow, what a symlink maze. The args.t -> ../op/args.t symlink is no problems, but it's the mess of directory links that the system has to traverse:
cpu/args.t cpu/../op/args.t Tail-recursive expansion cpu/../(../t/op)/args.t cpu/../(../(perldir/t)/op)/args.t cpu/../(../((perl-5.8.6)/t)/op)/args.t cpu/../(../((../build/perl-5.8.6)/t)/op)/args.t cpu/../(../((../(BUILD)/perl-5.8.6)/t)/op)/args.t
I'm supposing the initial level counts as 1, so 1+5 = 6 and blows the limit.
There's also an iteration limit, to stop a -> b -> c -> a cycles, but that's much higher. The recursion limit is a stack space issue. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |