Re: [Lsf-pc] [LSF/MM/BPF TOPIC] tracing the source of errors

From: Gabriel Krisman Bertazi
Date: Thu Feb 08 2024 - 15:39:23 EST


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