Use callout_reset_curcpu to allow the callout to be handled by the

current CPU and not always CPU 0.

This has the added benefit of reducing a huge amount of spinlock
contention on the callout_cpu spinlock for CPU 0.

Sponsored by:	Intel
This commit is contained in:
Jim Harris 2012-10-31 23:44:19 +00:00
parent 3049555773
commit 633c572996

View file

@ -390,7 +390,12 @@ nvme_qpair_submit_cmd(struct nvme_qpair *qpair, struct nvme_tracker *tr)
req->cmd.cid = tr->cid;
qpair->act_tr[tr->cid] = tr;
#if __FreeBSD_version >= 800030
callout_reset_curcpu(&tr->timer, NVME_TIMEOUT_IN_SEC * hz,
nvme_timeout, tr);
#else
callout_reset(&tr->timer, NVME_TIMEOUT_IN_SEC * hz, nvme_timeout, tr);
#endif
/* Copy the command from the tracker to the submission queue. */
memcpy(&qpair->cmd[qpair->sq_tail], &req->cmd, sizeof(req->cmd));