On Sun, May 09, 2021 at 02:20:32AM +0000, Al Viro wrote: > Umm... Interesting, especially considering the way dyname_dname() looks like. dynamic_dname(), obviously. > Looks like there's a piece of prepend() open-coded in it. And > since all ->d_dname() instances are either simple_dname() or end up > with call of dynamic_dname()... > > Might make sense to turn that method into > int (*d_dname)(struct dentry *, struct prepend_buffer *); > > Followup patch, obviously, but it might be worth looking into. > > Another thing that keeps bugging me about prepend_path() is the > set of return values. I mean, 0/1/2/3/-ENAMETOOLONG, and all > except 0 are unlikely? Might as well make that 0/1/2/3/-1, if > not an outright 0/1/2/3/4. And prepend() could return bool, while > we are at it (true - success, false - overflow)... OK... I think I see how to carve it up sanely, will post after I get some sleep.