Re: [PATCH] nilfs2: Use __field_struct() for a bitwise field

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

 



On Tue, May 7, 2024 at 8:24 AM Bart Van Assche wrote:
>
> As one can see in include/trace/stages/stage4_event_fields.h, the
> implementation of __field() uses the is_signed_type() macro. As one can see
> in commit dcf8e5633e2e ("tracing: Define the is_signed_type() macro once"),
> there has been an attempt to not make is_signed_type() trigger sparse
> warnings for bitwise types. Despite that change, sparse complains when
> passing a bitwise type to is_signed_type(). It is not clear to me why.
>
> Follow the example of <trace/events/initcall.h> and suppress the following
> sparse warnings by changing __field() into __field_struct():
>
>  fs/nilfs2/segment.c: note: in included file (through
>    include/trace/trace_events.h, include/trace/define_trace.h,
>    include/trace/events/nilfs2.h):
>  ./include/trace/events/nilfs2.h:191:1: warning: cast to restricted
>    blk_opf_t
>  ./include/trace/events/nilfs2.h:191:1: warning: restricted blk_opf_t
>    degrades to integer
>  ./include/trace/events/nilfs2.h:191:1: warning: restricted blk_opf_t
>    degrades to integer
>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
> Cc: Ryusuke Konishi <konishi.ryusuke@xxxxxxxxx>
> Reported-by: Ryusuke Konishi <konishi.ryusuke@xxxxxxxxx>
> Closes: https://lore.kernel.org/all/20240430080019.4242-2-konishi.ryusuke@xxxxxxxxx/
> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx>
> ---
>  include/trace/events/nilfs2.h | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/include/trace/events/nilfs2.h b/include/trace/events/nilfs2.h
> index 8efc6236f57c..8880c11733dd 100644
> --- a/include/trace/events/nilfs2.h
> +++ b/include/trace/events/nilfs2.h
> @@ -200,7 +200,11 @@ TRACE_EVENT(nilfs2_mdt_submit_block,
>                     __field(struct inode *, inode)
>                     __field(unsigned long, ino)
>                     __field(unsigned long, blkoff)
> -                   __field(enum req_op, mode)
> +                   /*
> +                    * Use field_struct() to avoid is_signed_type() on the
> +                    * bitwise type enum req_op.
> +                    */
> +                   __field_struct(enum req_op, mode)
>             ),
>
>             TP_fast_assign(

Bart, thank you very much for all your help.

This is a bit technical and may be debatable.  But this can actually
eliminate the sparse warnings.
So I'm thinking of having Andrew pick this up instead of my patch
currently pending in the mm tree.

If anyone has any objections, please let us know.


Thanks,
Ryusuke Konishi





[Index of Archives]     [Linux Filesystem Development]     [Linux BTRFS]     [Linux CIFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux