HomeFreeBSD

vtblk: Invoke busdma completion callbacks when polling

Description

vtblk: Invoke busdma completion callbacks when polling

vtblk_poll_request() is used for kernel dumps and for fetching the block
device's identifier string during device probing. In the latter case,
it was not calling bus_dmamap_sync() after completing the I/O, but this
is required in general.

Thus:

  • Factor out per-request code from vtblk_queue_completed().
  • Use it in vtblk_poll_request() once virtqueue_poll() finishes.
  • While here, assert that virtqueue_poll() returns the request that we expect.

Reported by: KMSAN
Fixes: 782105f7c898 ("vtblk: Use busdma")
Reviewed by: cperciva, imp
Sponsored by: Klara, Inc.
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D45665

Details

Provenance
markjAuthored on Jul 4 2024, 2:15 PM
Reviewer
cperciva
Differential Revision
D45665: vtblk: Invoke busdma completion callbacks when polling
Parents
rGa2e65d45a5c6: dhclient: correct struct ifreq allocation
Branches
Unknown
Tags
Unknown