tech-kern archive

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

Re: fcntl(F_GETPATH) support



On 9/14/19, Christos Zoulas <christos%zoulas.com@localhost> wrote:
>
> Comments?
>
> +	error = vnode_to_path(kpath, MAXPATHLEN, fp->f_vnode, l, l->l_proc);

What motivates this change?

I think it is a little problematic in that namecache resolution is not
guaranteed to work. If the consumer does not check for failure or fallback
to something else the user is going to experience "once in the blue moon"
failures.

For example clang likes to get full paths to names. On Linux it can
trivially do it thanks to dentry cache. On other systems there is a
compilation check for F_GETPATH. If none of this is present it goes for
realpath, which is slover but basically works. If F_GETPATH is present,
it is always used and there is no fallback if it fails. Then you risk
setting yourself up for a weird compilation failure, which may not even
repeat itself after you retry.

All in all I don't think this should be added unless namecache becomes
reliable. The above reasoning is why I did not add it to FreeBSD.

-- 
Mateusz Guzik <mjguzik gmail.com>



Home | Main Index | Thread Index | Old Index