Page MenuHomeFreeBSD

D58948.id184311.diff
No OneTemporary

D58948.id184311.diff

diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -270,8 +270,8 @@
error = ufshci_req_queue_response_is_error(req_queue, ocs,
&cpl.response_upiu);
- /* Retry for admin commands */
- retriable = req->is_admin;
+ /* Retry for admin commands. A failed controller must not retry. */
+ retriable = req->is_admin && !req_queue->ctrlr->is_failed;
retry = error && retriable &&
req->retries < req_queue->ctrlr->retry_count;
if (retry)
@@ -765,6 +765,9 @@
mtx_assert(&req_queue->qops.get_hw_queue(req_queue)->qlock, MA_OWNED);
+ if (req_queue->ctrlr->is_failed)
+ return (ENXIO);
+
error = req_queue->qops.reserve_slot(req_queue, &tr);
if (error != 0) {
ufshci_printf(req_queue->ctrlr, "Failed to get tracker");

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 7, 6:22 AM (2 m, 5 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36980618
Default Alt Text
D58948.id184311.diff (854 B)

Event Timeline