diff options
| author | Uday Shankar <[email protected]> | 2025-08-08 21:44:43 +0000 |
|---|---|---|
| committer | Jens Axboe <[email protected]> | 2025-08-11 13:57:37 +0000 |
| commit | 212c928d01e9ea1d1c46a114650b551da8ca823e (patch) | |
| tree | 255d3f6e8e5f5ae72ddfe13b359f052b3020cbc4 /drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | |
| parent | drbd: Remove the open-coded page pool (diff) | |
| download | kernel-212c928d01e9ea1d1c46a114650b551da8ca823e.tar.gz kernel-212c928d01e9ea1d1c46a114650b551da8ca823e.zip | |
ublk: don't quiesce in ublk_ch_release
ublk_ch_release currently quiesces the device's request_queue while
setting force_abort/fail_io. This avoids data races by preventing
concurrent reads from the I/O path, but is not strictly needed - at this
point, canceling is already set and guaranteed to be observed by any
concurrently executing I/Os, so they will be handled properly even if
the changes to force_abort/fail_io propagate to the I/O path later.
Remove the quiesce/unquiesce calls from ublk_ch_release. This makes the
writes to force_abort/fail_io concurrent with the reads in the I/O path,
so make the accesses atomic.
Before this change, the call to blk_mq_quiesce_queue was responsible for
most (90%) of the runtime of ublk_ch_release. With that call eliminated,
ublk_ch_release runs much faster. Here is a comparison of the total time
spent in calls to ublk_ch_release when a server handling 128 devices
exits, before and after this change:
before: 1.11s
after: 0.09s
Signed-off-by: Uday Shankar <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
0 files changed, 0 insertions, 0 deletions
