+49
−1
Loading
Linux host nvme driver processes all pending cqe's in one batch along with completing backing blk_mq req's and later rings cq_doorbell once for all processed cqes. As blk_mq req's are completed there is room for more submissions before ringing cq_doorbell. This may race with vfio_user cq_is_full() which uses cq_doorbell to make final decision and as host has not updated cq_doorbell we fail with cq_full error. To mitigate this only process commands from sq which have free cq slot. Signed-off-by:Swapnil Ingle <swapnil.ingle@nutanix.com> Change-Id: I0cefb41df8099eb71de25923d05a9fcb28e4d124 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16788 Reviewed-by:
Jim Harris <james.r.harris@intel.com> Reviewed-by:
Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot