Jan Kara <jack@xxxxxxx> writes: > On Wed 07-02-24 10:54:34, Miklos Szeredi via Lsf-pc wrote: >> [I'm not planning to attend LSF this year, but I thought this topic >> might be of interest to those who will.] >> >> The errno thing is really ancient and yet quite usable. But when >> trying to find out where a particular EINVAL is coming from, that's >> often mission impossible. >> >> Would it make sense to add infrastructure to allow tracing the source >> of errors? E.g. >> >> strace --errno-trace ls -l foo >> ... >> statx(AT_FDCWD, "foo", ...) = -1 ENOENT [fs/namei.c:1852] >> ... >> >> Don't know about others, but this issue comes up quite often for me. > > Yes, having this available would be really useful at times. Sometimes I > had to resort to kprobes or good old printks. > >> I would implement this with macros that record the place where a >> particular error has originated, and some way to query the last one >> (which wouldn't be 100% accurate, but good enough I guess). > > The problem always has been how to implement this functionality in a > transparent way so the code does not become a mess. So if you have some > idea, I'd say go for it :) I had a proposal to provide the LoC of filesystem errors as part of an extended record of the FAN_FS_ERROR messages (fanotify interface). It might be a sensible interface to expose this information if not prohibitively expensive. One might record the position with a macro and do the fsnotify_sb_error from a safer context. -- Gabriel Krisman Bertazi