]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
io_uring: io_uring_complete() trace should take an integer
authorJens Axboe <axboe@kernel.dk>
Fri, 3 Sep 2021 22:55:26 +0000 (16:55 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 3 Sep 2021 22:59:06 +0000 (16:59 -0600)
It currently takes a long, and while that's normally OK, the io_uring
limit is an int. Internally in io_uring it's an int, but sometimes it's
passed as a long. That can yield confusing results where a completions
seems to generate a huge result:

ou-sqp-1297-1298    [001] ...1   788.056371: io_uring_complete: ring 000000000e98e046, user_data 0x0, result 4294967171, cflags 0

which is due to -ECANCELED being stored in an unsigned, and then passed
in as a long. Using the right int type, the trace looks correct:

iou-sqp-338-339     [002] ...1    15.633098: io_uring_complete: ring 00000000e0ac60cf, user_data 0x0, result -125, cflags 0

Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/trace/events/io_uring.h

index e4e44a2b4aa91c7ba2fb742546677c0c18fea6cb..0dd30de00e5b44ce0c0d8090299fc1ac8a22fa15 100644 (file)
@@ -295,14 +295,14 @@ TRACE_EVENT(io_uring_fail_link,
  */
 TRACE_EVENT(io_uring_complete,
 
-       TP_PROTO(void *ctx, u64 user_data, long res, unsigned cflags),
+       TP_PROTO(void *ctx, u64 user_data, int res, unsigned cflags),
 
        TP_ARGS(ctx, user_data, res, cflags),
 
        TP_STRUCT__entry (
                __field(  void *,       ctx             )
                __field(  u64,          user_data       )
-               __field(  long,         res             )
+               __field(  int,          res             )
                __field(  unsigned,     cflags          )
        ),
 
@@ -313,7 +313,7 @@ TRACE_EVENT(io_uring_complete,
                __entry->cflags         = cflags;
        ),
 
-       TP_printk("ring %p, user_data 0x%llx, result %ld, cflags %x",
+       TP_printk("ring %p, user_data 0x%llx, result %d, cflags %x",
                          __entry->ctx, (unsigned long long)__entry->user_data,
                          __entry->res, __entry->cflags)
 );