HomeFreeBSD

virtio_p9fs: Fix handling of a full request queue

Description

virtio_p9fs: Fix handling of a full request queue

If, when submitting a request, the virtqueue is full, we sleep until an
interrupt has fired, then restart the request. However, while sleeping
the channel lock is dropped, and in the meantime another thread may have
reset the per-channel SG list, so upon retrying we'd (re)submit whatever
happened to be left over in the previous request.

Fix the problem by rebuilding the SG list after sleeping.

Sponsored by: Klara, Inc.

Details

Provenance
markjAuthored on Fri, Oct 25, 5:51 PM
Parents
rGb9500cbd3896: virtio_p9fs: Fix some style issues
Branches
Unknown
Tags
Unknown