Re: [PATCH 5/8] vfs: Include origin of the SB error notification

Gabriel Krisman Bertazi
2020-12-08T12:59:14Z

David Howells <dhowells@redhat.com> writes:

> Gabriel Krisman Bertazi <krisman@collabora.com> wrote:
>
>> @@ -130,6 +131,8 @@ struct superblock_error_notification {
>> __u32 error_cookie;
>> __u64 inode;
>> __u64 block;
>> + char function[SB_NOTIFICATION_FNAME_LEN];
>> + __u16 line;
>> char desc[0];
>> };
>
> As Darrick said, this is a UAPI breaker, so you shouldn't do this (you can,
> however, merge this ahead a patch). Also, I would put the __u16 before the
> char[].
>
> That said, I'm not sure whether it's useful to include the function name and
> line. Both fields are liable to change over kernel commits, so it's not
> something userspace can actually interpret. I think you're better off dumping
> those into dmesg.
>
> Further, this reduces the capacity of desc[] significantly - I don't know if
> that's a problem.

Yes, that is a big problem as desc is already quite limited. I don't
think it is a problem for them to change between kernel versions, as the
monitoring userspace can easily associate it with the running kernel.
The alternative would be generating something like unique IDs for each
error notification in the filesystem, no?

> And yet further, there's no room for addition of new fields with the desc[]
> buffer on the end. Now maybe you're planning on making use of desc[] for
> text-encoding?

Yes. I would like to be able to provide more details on the error,
without having a unique id. For instance, desc would have the formatted
string below, describing the warning:

ext4_warning(inode->i_sb, "couldn't mark inode dirty (err %d)", err);

>
> David
>

--
Gabriel Krisman Bertazi