Commit 7d59065a authored by Jens Axboe's avatar Jens Axboe Committed by Treehugger Robot
Browse files

BACKPORT: io_uring/fdinfo: remove need for sqpoll lock for thread/pid retrieval



A previous commit added a trylock for getting the SQPOLL thread info via
fdinfo, but this introduced a regression where we often fail to get it if
the thread is busy. For that case, we end up not printing the current CPU
and PID info.

Rather than rely on this lock, just print the pid we already stored in
the io_sq_data struct, and ensure we update the current CPU every time
we've slept or potentially rescheduled. The latter won't potentially be
100% accurate, but that wasn't the case before either as the task can
get migrated at any time unless it has been pinned at creation time.

We retain keeping the io_sq_data dereference inside the ctx->uring_lock,
as it has always been, as destruction of the thread and data happen below
that. We could make this RCU safe, but there's little point in doing that.

With this, we always print the last valid information we had, rather than
have spurious outputs with missing information.

Bug: 254441685
Fixes: 7644b1a1 ("io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid")
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
(cherry picked from commit a0d45c3f)
[Lee: PF_NO_SETAFFINITY has been removed upstream causing surrounding diff to change]
Signed-off-by: default avatarLee Jones <joneslee@google.com>
Change-Id: Iab4aeffb443ed5140b33dd7274fee57c36f40f9e
parent 30c47649
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment