From nobody Mon Oct 19 06:24:39 2026 X-Original-To: dev-commits-src-main@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 4j7QWD0fYhz6vsSS for ; Mon, 19 Oct 2026 06:24:40 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4j7QWC5sFVz3PXB for ; Mon, 19 Oct 2026 06:24:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792391079; 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=hyzEKwPvQYITafrwDdxpl1v2JX3ebg+KYUeMUebwjcE=; b=A+qXnckZkhcPPrAYrTC+RuLsfW2J02J5gZJCxb7U+fFI2Yc1RwOjSjND1RjINOj7wTY6eY zoclNWxLHuDh7ZV7R3EZHDCMbyL4yDzLt1Xdzyu6XfFmnBI+hbUKpbtLuqa37x640o7YO4 55CbbHSr4nf9pBoJgn/BYokn6wFezr/bUi9jm1MqZsvfcrA45GTzQ8GqfW2Pok7u4j7aJ1 XRYujbcMZFvxqGIB3langZfW8/lx1Z3tzNZAnT7iKtM057B8tjYn6jmlm1LS8q922ACm91 kAAQ5DG15PGKM/8uqs339IQk715lwgQqgbZPi244zZBbZ2nlYHsmlxUrlrVuxQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792391079; b=N+Q/8iJNIB65DgfLv4qI54ZWu8vjv1zQRD5sYHtKNIemCsgvV5r9v2V+1u5Fb4hMm+/cN+ ndy8P0fPlZLSqhgw/2YQp67l9FO4lHvuCc1IMYL0yIcmtL3XyJ4ab3NglcS1MpKBsU/NVk BOWLESD8yWegR2H1iynwc6S5qnXLTb2Zn+6iAbmojkYhGY/ZNWYkHPKv9tgqyRTUy2Q5+S 4JWac3J13vvpHQdcDz1zmmGJlbz4QaFtFqhGrbkAtlAxybKkWuASFxHbEP051GOur0QzhT 88sl2y/tOXthU4ViZvQTCJInrVhgHeNo1YmdxgnM1QH9h/akhjkhmEZaMqCSQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792391079; 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=hyzEKwPvQYITafrwDdxpl1v2JX3ebg+KYUeMUebwjcE=; b=ymhEZVGWxf/7qx4sbbBkfAz/zqjCnfEaxE/5Wt8dX1QXOPmFXaBVE/U0+ylwJ+UwkXI+0Q U5PMmi1I7X6z2GujN+Yna9Dj48DPv2E95qHaCJn/0AWuaIQKm00FOZLPRjvTeswqBkSWx/ FgkdrFR0NlD/ICQtkRBCR1FeJRqAfbh8KHbDReeIbMXFkkJFGRaK6Vrt2mgeHbyBrYHqyM ZNSygBTV2okJKo1LAhHtKYgZL+ytQgRqt4aAFpZzRdI7eZIqaPNqFwM2yU0H5jmocmRuEO gGjMIAnRLlok14iM2vNLZMdhc0xZO2qE9EadBZze8F4qcxqmDgQ272E+2RZugA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j7QWC4vgNz1NVM for ; Mon, 19 Oct 2026 06:24:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 34182 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 19 Oct 2026 06:24:39 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: e65ccec8c0e3 - main - nvme: Notify namespaces on reset sometimes List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/main X-Git-Reftype: branch X-Git-Commit: e65ccec8c0e359f584b2948c100ee3012e43c6e7 Auto-Submitted: auto-generated Date: Mon, 19 Oct 2026 06:24:39 +0000 Message-Id: <6ad5b7a7.34182.3a2f0e24@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=e65ccec8c0e359f584b2948c100ee3012e43c6e7 commit e65ccec8c0e359f584b2948c100ee3012e43c6e7 Author: Warner Losh AuthorDate: 2026-10-19 04:41:00 +0000 Commit: Warner Losh CommitDate: 2026-10-19 06:22:51 +0000 nvme: Notify namespaces on reset sometimes When we're resetting after a controller failure, and we fix the failure, and we've not resetting as part of initialization, notify the all the children devices of new namespaces. When we failed the controller before, we removed all the namespaces. Reviewed by: seuros Differential Revision: https://reviews.freebsd.org/D59832 --- sys/dev/nvme/nvme_ctrlr.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index f27653536c66..354ca7a78e51 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -673,6 +673,24 @@ nvme_ctrlr_notify_ns_added(struct nvme_controller *ctrlr, device_t child) } } +static void +nvme_ctrlr_notify_ns_recovered(struct nvme_controller *ctrlr) +{ + device_t *children; + int n_children; + + if (device_get_children(ctrlr->dev, &children, &n_children) != 0) + return; + + /* + * A controller failure was reported to every child, so notify every + * child when its namespaces become available again. + */ + for (int i = 0; i < n_children; i++) + nvme_ctrlr_notify_ns_added(ctrlr, children[i]); + free(children, M_TEMP); +} + static bool is_log_page_id_valid(uint8_t page_id) { @@ -1278,13 +1296,19 @@ static void nvme_ctrlr_reset_task(void *arg, int pending) { struct nvme_controller *ctrlr = arg; + bool recovering; int status; + recovering = ctrlr->is_initialized && ctrlr->is_failed; nvme_ctrlr_devctl_log(ctrlr, "RESET", "event=\"start\""); status = nvme_ctrlr_hw_reset(ctrlr); if (status == 0) { nvme_ctrlr_devctl_log(ctrlr, "RESET", "event=\"success\""); + if (recovering) + ctrlr->is_failed = false; nvme_ctrlr_start(ctrlr, true); + if (recovering && !ctrlr->is_failed) + nvme_ctrlr_notify_ns_recovered(ctrlr); } else { nvme_ctrlr_devctl_log(ctrlr, "RESET", "event=\"timed_out\""); nvme_ctrlr_fail(ctrlr, true);