Summary: | nvme is not shut properly for suspend/resume | ||||||
---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | Poul-Henning Kamp <phk> | ||||
Component: | kern | Assignee: | freebsd-scsi (Nobody) <scsi> | ||||
Status: | Closed FIXED | ||||||
Severity: | Affects Many People | CC: | bsd, bsdimp, bwidawsk, cem, dch, freebsdbugs, imp, ports, rudolphfroger, scottl | ||||
Priority: | --- | ||||||
Version: | CURRENT | ||||||
Hardware: | amd64 | ||||||
OS: | Any | ||||||
Attachments: |
|
Description
Poul-Henning Kamp
![]() ![]() Created attachment 198507 [details]
Test patch for freezing devq
I don't think this is the right fix (according to Warner), but it looks like it should be needed in addition to the correct fix.
The devq freezing is racy. Could you explain how for my edification (not arguing, I just don't see it). Calling cam_freeze_devq() doesn't guarantee that nothing is in-flight when it returns. A lesser problem is that it (and xpt_freeze_simq()) also doesn't prevent sending CCBs to the sim that aren't flagged with XPT_FC_QUEUED. Is this (racy) fix better than no fix at all? I have this messages on resume, but after 10 secs of freeze, the system resumes normal operation. It's OK for me as log as it doesn't damage ZFS. This has been fixed in two ways. First, we properly shutdown the controller for suspend / resume. This ensures that all I/O is drained. Second, before we get to the shutdown, the system now syncs all mounted filesystems ensuring a stable point. |