Page MenuHomeFreeBSD

LSI HBA drivers report incorrect queue depth to CAM
ClosedPublic

Authored by mav on Feb 5 2018, 9:36 PM.

Details

Summary

Both mps(4) and mpr(4) drivers were found to report CAM bigger queue depth then they really can handle. It makes them later under high load with many disks return some of submitted requests back with CAM_REQUEUE_REQ status for later resubmission (can be seen with CAM error logging enabled with camcontrol debug -I all).

It may both reduce performance and potentially affect some third-party software trying to talks disks directly with SCSI commands.

Test Plan

Setting those loader tunables allows to trigger this issue much easier:
hw.mps.max_reqframes=128
hw.mpr.max_reqframes=128

Also incorrect queue depth after setting it can be seen with camcontrol tags daX -v command. Applying the patch both makes the proper depth reported and removes the errors.

Diff Detail

Repository
rS FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

mav created this revision.Feb 5 2018, 9:36 PM
scottl accepted this revision.Feb 5 2018, 10:45 PM

Good find on this. I've seen queue-full conditions in the past but hadn't tracked down the causes; I think this is it.

This revision is now accepted and ready to land.Feb 5 2018, 10:45 PM
This revision was automatically updated to reflect the committed changes.