Page MenuHomeFreeBSD

nvme/nda: Fail all nvme I/Os after controller fails
ClosedPublic

Authored by imp on Jul 28 2021, 10:33 PM.
Tags
None
Referenced Files
F161384139: D31341.id.diff
Fri, Jul 3, 7:39 AM
F161372106: D31341.id93147.diff
Fri, Jul 3, 5:48 AM
F161369527: D31341.id95325.diff
Fri, Jul 3, 5:24 AM
F161335563: D31341.id92909.diff
Thu, Jul 2, 10:37 PM
F161309922: D31341.id.diff
Thu, Jul 2, 4:13 PM
Unknown Object (File)
Thu, Jul 2, 12:24 AM
Unknown Object (File)
Sat, Jun 27, 9:11 AM
Unknown Object (File)
Mon, Jun 22, 1:42 PM
Subscribers

Details

Summary

Once the controller has failed, fail all I/O w/o sending it to the
device. The reset of the nvme driver won't schedule any I/O to the
failed device, and the controller is in an indeterminate state and can't
accept I/O. Fail both at the top end of the sim and the bottom
end. Don't bother queueing up the I/O for failure in a different task.

Sponsored by: Netflix

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 40815
Build 37704: arc lint + arc unit

Event Timeline

imp requested review of this revision.Jul 28 2021, 10:33 PM
sys/dev/nvme/nvme_qpair.c
1076–1077

Should this comment get updated as nvme_qpair_manual_complete_request() isn't posting to a task?

sys/dev/nvme/nvme_sim.c
262

I'm not seeing a definition for CAM_REQ_DEV_NOT_THERE. Should this be CAM_DEV_NOT_THERE?

update per review / chuck

imp marked 2 inline comments as done.Aug 2 2021, 10:15 PM
This revision is now accepted and ready to land.Aug 2 2021, 10:52 PM
sys/dev/nvme/nvme_sim.c
264

It is not a problem, but is it really needed?