Page MenuHomeFreeBSD

nvme: do not complete a command when its Abort is not performed
Needs ReviewPublic

Authored by seuros on Sun, Sep 13, 9:24 AM.
Referenced Files
F171970322: D59634.diff
Tue, Sep 15, 12:44 AM
F171959019: D59634.diff
Mon, Sep 14, 10:34 PM
Unknown Object (File)
Mon, Sep 14, 1:41 AM
Unknown Object (File)
Sun, Sep 13, 5:00 PM
Unknown Object (File)
Sun, Sep 13, 10:20 AM
Unknown Object (File)
Sun, Sep 13, 10:19 AM
Subscribers

Details

Reviewers
imp
adrian
dab
Group Reviewers
cam
Summary

An Abort completion with cdw0 bit 0 set means the controller did not
abort the command; the command can still complete later. The driver
treated this as aborted anyway: it completed the command itself and
freed the CID. When the controller completed the command later,
the CID may already belong to a new command, so the new command
finished with the old command's status, or the unknown-cid assertion
fired on INVARIANTS kernels. The watchdog also kept sending a new
Abort for the same command every half second while the first one was
still pending.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 76824
Build 73707: arc lint + arc unit