Pull io_uring updates from Jens Axboe: "Here are the io_uring changes for this merge window. Light on new features this time around (just splice + buffer selection), lots of cleanups, fixes, and improvements to existing support. In particular, this contains: - Cleanup fixed file update handling for stack fallback (Hillf) - Re-work of how pollable async IO is handled, we no longer require thread offload to handle that. Instead we rely using poll to drive this, with task_work execution. - In conjunction with the above, allow expendable buffer selection, so that poll+recv (for example) no longer has to be a split operation. - Make sure we honor RLIMIT_FSIZE for buffered writes - Add support for splice (Pavel) - Linked work inheritance fixes and optimizations (Pavel) - Async work fixes and cleanups (Pavel) - Improve io-wq locking (Pavel) - Hashed link write improvements (Pavel) - SETUP_IOPOLL|SETUP_SQPOLL improvements (Xiaoguang)" * tag 'for-5.7/io_uring-2020-03-29' of git://git.kernel.dk/linux-block: (54 commits) io_uring: cleanup io_alloc_async_ctx() io_uring: fix missing 'return' in comment io-wq: handle hashed writes in chains io-uring: drop 'free_pfile' in struct io_file_put io-uring: drop completion when removing file io_uring: Fix ->data corruption on re-enqueue io-wq: close cancel gap for hashed linked work io_uring: make spdxcheck.py happy io_uring: honor original task RLIMIT_FSIZE io-wq: hash dependent work io-wq: split hashing and enqueueing io-wq: don't resched if there is no work io-wq: remove duplicated cancel code io_uring: fix truncated async read/readv and write/writev retry io_uring: dual license io_uring.h uapi header io_uring: io_uring_enter(2) don't poll while SETUP_IOPOLL|SETUP_SQPOLL enabled io_uring: Fix unused function warnings io_uring: add end-of-bits marker and build time verify it io_uring: provide means of removing buffers io_uring: add IOSQE_BUFFER_SELECT support for IORING_OP_RECVMSG ...
Showing the changes to include/trace (1 of 12 files). Show all
Unified · Split
| @@ -357,6 +357,109 @@ TRACE_EVENT(io_uring_submit_sqe, · 356 unmodified lines | ||
| 357 | 357 | __entry->force_nonblock, __entry->sq_thread) |
| 358 | 358 | ); |
| 359 | 359 | |
| 360 | +TRACE_EVENT(io_uring_poll_arm, | |
| 361 | + | |
| 362 | + TP_PROTO(void *ctx, u8 opcode, u64 user_data, int mask, int events), | |
| 363 | + | |
| 364 | + TP_ARGS(ctx, opcode, user_data, mask, events), | |
| 365 | + | |
| 366 | + TP_STRUCT__entry ( | |
| 367 | + __field( void *, ctx ) | |
| 368 | + __field( u8, opcode ) | |
| 369 | + __field( u64, user_data ) | |
| 370 | + __field( int, mask ) | |
| 371 | + __field( int, events ) | |
| 372 | + ), | |
| 373 | + | |
| 374 | + TP_fast_assign( | |
| 375 | + __entry->ctx = ctx; | |
| 376 | + __entry->opcode = opcode; | |
| 377 | + __entry->user_data = user_data; | |
| 378 | + __entry->mask = mask; | |
| 379 | + __entry->events = events; | |
| 380 | + ), | |
| 381 | + | |
| 382 | + TP_printk("ring %p, op %d, data 0x%llx, mask 0x%x, events 0x%x", | |
| 383 | + __entry->ctx, __entry->opcode, | |
| 384 | + (unsigned long long) __entry->user_data, | |
| 385 | + __entry->mask, __entry->events) | |
| 386 | +); | |
| 387 | + | |
| 388 | +TRACE_EVENT(io_uring_poll_wake, | |
| 389 | + | |
| 390 | + TP_PROTO(void *ctx, u8 opcode, u64 user_data, int mask), | |
| 391 | + | |
| 392 | + TP_ARGS(ctx, opcode, user_data, mask), | |
| 393 | + | |
| 394 | + TP_STRUCT__entry ( | |
| 395 | + __field( void *, ctx ) | |
| 396 | + __field( u8, opcode ) | |
| 397 | + __field( u64, user_data ) | |
| 398 | + __field( int, mask ) | |
| 399 | + ), | |
| 400 | + | |
| 401 | + TP_fast_assign( | |
| 402 | + __entry->ctx = ctx; | |
| 403 | + __entry->opcode = opcode; | |
| 404 | + __entry->user_data = user_data; | |
| 405 | + __entry->mask = mask; | |
| 406 | + ), | |
| 407 | + | |
| 408 | + TP_printk("ring %p, op %d, data 0x%llx, mask 0x%x", | |
| 409 | + __entry->ctx, __entry->opcode, | |
| 410 | + (unsigned long long) __entry->user_data, | |
| 411 | + __entry->mask) | |
| 412 | +); | |
| 413 | + | |
| 414 | +TRACE_EVENT(io_uring_task_add, | |
| 415 | + | |
| 416 | + TP_PROTO(void *ctx, u8 opcode, u64 user_data, int mask), | |
| 417 | + | |
| 418 | + TP_ARGS(ctx, opcode, user_data, mask), | |
| 419 | + | |
| 420 | + TP_STRUCT__entry ( | |
| 421 | + __field( void *, ctx ) | |
| 422 | + __field( u8, opcode ) | |
| 423 | + __field( u64, user_data ) | |
| 424 | + __field( int, mask ) | |
| 425 | + ), | |
| 426 | + | |
| 427 | + TP_fast_assign( | |
| 428 | + __entry->ctx = ctx; | |
| 429 | + __entry->opcode = opcode; | |
| 430 | + __entry->user_data = user_data; | |
| 431 | + __entry->mask = mask; | |
| 432 | + ), | |
| 433 | + | |
| 434 | + TP_printk("ring %p, op %d, data 0x%llx, mask %x", | |
| 435 | + __entry->ctx, __entry->opcode, | |
| 436 | + (unsigned long long) __entry->user_data, | |
| 437 | + __entry->mask) | |
| 438 | +); | |
| 439 | + | |
| 440 | +TRACE_EVENT(io_uring_task_run, | |
| 441 | + | |
| 442 | + TP_PROTO(void *ctx, u8 opcode, u64 user_data), | |
| 443 | + | |
| 444 | + TP_ARGS(ctx, opcode, user_data), | |
| 445 | + | |
| 446 | + TP_STRUCT__entry ( | |
| 447 | + __field( void *, ctx ) | |
| 448 | + __field( u8, opcode ) | |
| 449 | + __field( u64, user_data ) | |
| 450 | + ), | |
| 451 | + | |
| 452 | + TP_fast_assign( | |
| 453 | + __entry->ctx = ctx; | |
| 454 | + __entry->opcode = opcode; | |
| 455 | + __entry->user_data = user_data; | |
| 456 | + ), | |
| 457 | + | |
| 458 | + TP_printk("ring %p, op %d, data 0x%llx", | |
| 459 | + __entry->ctx, __entry->opcode, | |
| 460 | + (unsigned long long) __entry->user_data) | |
| 461 | +); | |
| 462 | + | |
| 360 | 463 | #endif /* _TRACE_IO_URING_H */ |
| 361 | 464 | |
| 362 | 465 | /* This part must be outside protection */ |