From nobody Thu Sep 28 22:28:10 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RxSmW1hZgz4vhbW; Thu, 28 Sep 2023 22:28:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RxSmW0r48z3QQn; Thu, 28 Sep 2023 22:28:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695940091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z9r3gLIAh22e4khCvsZRckqU+tdFNPgRWinJ6T9MVCM=; b=r+zW7Eq+EBZ6kZyIFUI/GRGQUDOXO7yMOTOJJUiQu0MD9RznZ7v8EzUePOaXgdouYQf9kk wdemeDzI0+caFl92x0/eN8yd0y2XSIrDLSHRMX00C7PqHX0X6vwENqsQPCGDL+GD6cSxCH 7Pm/dq7Ui3hG6qE6kHDQ1Ip0TEeTcC0ZcyWk9SWC52mKWBCVQi1JnbrBtA2+xT/eCzo6Ap bYngl0e4f5nnJxIXd5kvYa3MGLBhx9gL6BkjVPprlKibT0kmriA4AMG02qartdJn/HU5NS QWTr63+m8ScYVBqGVka7zQD0tSd1FAPWtzyW24KFQKgypFszW2IGIhq2k58qTQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1695940091; a=rsa-sha256; cv=none; b=GJVYmK6wWumnSfWA2KYahadfND14ioNqT3gKRu84HinXdjOvodEKgVW4ewN8sIPo9gyCEa cyDjLJZeqysfbNlZYG9/wZai2Scin8EW10N5HuvJaQOebHRlkceAR3vsEqBXd1FOxriusQ usswvOI2QKuNtPm62SoSHSglIxwpgj7PIg2K8uvvS6LBWrZq4qo3460N+fVeJJI7xdeuO/ srSJSqeLb3XaOgn1bGWlaJFOUyzue7+jv6edt69BVF5Ee9U5/y6CmAqRJreLMh0Nj81cRw hZKd/P5PW7gTBk5pHkZyYE+1/Nu7KQEFaa6f+nrdn0jfxmg47tgn0hGltaiSqA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695940091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Z9r3gLIAh22e4khCvsZRckqU+tdFNPgRWinJ6T9MVCM=; b=lV9kRP70/V2za27Ksp3hG2C0rD2vLaKK0MAWZK+cnyBf0V4osnjSnUJcsGoqtz2fnngwYm klXxVvxzUjY1EAS8z61cH/ln6YW6C9qctF/2999LZuCT2pyqsPXuscFgG1rmXoj14kYVGK 2GbjU7pjxecLTZ5+T6EAU6XpR7M7VJwLAKM5p38Zv1fwQkSEtyl9sg5ahFhiu+HJ1oVpO4 H7I6SD+EfIA0lRSt8OBTwU/irJq3AmydhqunVjA9Jpj7LwnqOtXT/2BkFPtwgp1RmWRtLP suNl8XNmx6pqXihVpADdwBuAnLmyl0q3Vw0JtVMJhTxLbUs8c2UBQ1ahk5HZfQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RxSmV6xDPzgF1; Thu, 28 Sep 2023 22:28:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 38SMSAZW073747; Thu, 28 Sep 2023 22:28:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 38SMSA9h073744; Thu, 28 Sep 2023 22:28:10 GMT (envelope-from git) Date: Thu, 28 Sep 2023 22:28:10 GMT Message-Id: <202309282228.38SMSA9h073744@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: b2bcb31fef42 - releng/14.0 - nvme: Give up when we've failed List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/releng/14.0 X-Git-Reftype: branch X-Git-Commit: b2bcb31fef42448c5cd374b46ce5e40e41339c48 Auto-Submitted: auto-generated The branch releng/14.0 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=b2bcb31fef42448c5cd374b46ce5e40e41339c48 commit b2bcb31fef42448c5cd374b46ce5e40e41339c48 Author: Warner Losh AuthorDate: 2023-09-28 20:46:00 +0000 Commit: Warner Losh CommitDate: 2023-09-28 22:26:13 +0000 nvme: Give up when we've failed Normally, we poll the device every so often to see if commands have timed out. However, we'll go into the recovery state as part of failing the drive. To account for all possibilties, if we're failed when we get into the polling function, just stop polling: Party is over. Sponsored by: Netflix (cherry picked from commit d95431624f934fe4740211738fc787808005b14e) (cherry picked from commit 5e9b7d0e0e0bd4cba29de33569ab0ca86763f635) Approved-by: re (cperciva) --- sys/dev/nvme/nvme_qpair.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/sys/dev/nvme/nvme_qpair.c b/sys/dev/nvme/nvme_qpair.c index b256c4713c8d..4e37aa0e1020 100644 --- a/sys/dev/nvme/nvme_qpair.c +++ b/sys/dev/nvme/nvme_qpair.c @@ -1011,6 +1011,17 @@ nvme_qpair_timeout(void *arg) mtx_assert(&qpair->recovery, MA_OWNED); + /* + * If the controller has failed, give up. We're never going to change + * state from a failed controller: no further transactions are possible. + * We go ahead and let the timeout expire in many cases for simplicity. + */ + if (qpair->ctrlr->is_failed) { + nvme_printf(ctrlr, "Controller failed, giving up\n"); + qpair->timer_armed = false; + return; + } + switch (qpair->recovery_state) { case RECOVERY_NONE: /* @@ -1094,8 +1105,8 @@ nvme_qpair_timeout(void *arg) idle = false; /* We want to keep polling */ break; case RECOVERY_WAITING: - nvme_printf(ctrlr, "waiting for reset to complete\n"); - idle = false; /* We want to keep polling */ + nvme_printf(ctrlr, "Waiting for reset to complete\n"); + idle = false; /* We want to keep polling */ break; }