From nobody Wed Nov 19 21:44:37 2025 X-Original-To: dev-commits-src-branches@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 4dBZks5sL5z6JK3C for ; Wed, 19 Nov 2025 21:44:37 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dBZks21FWz3CHs for ; Wed, 19 Nov 2025 21:44:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763588677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zH65J3yC0vTCgxFVLwqYm2fXKpPSod6HwbeVvz90KQU=; b=q1v/VVwogI5+pNGRhdTAd8YZ3lEecJpBLdTg8Nimj6O5TIy/zuepFpXKUyw6rcBlu2ifQf mYSE5RrvX7bxkraCAlSjUejMPp7gEMHjBU2WImKhej+xIWYpP05SF5hNn1bI6uMed9OWF1 tUWEXY73s2SUEVpFTdhVq+7kFeGJ56koCiS/AnUPVeGuDzeSLifDp8kIC5fr0KkJucqAq4 j1KNcC5Lrpt14OuauiymYiw2MMfaISyrRNWDpejKtw1O4oFpulD3G4OqkxBbFfjJOLtwd0 +dD60OblX8fUoGsZzzpjsCu+fdQSGDJ9p5fYNLwpgsGMbCID9euNG2KrYhmWgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763588677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zH65J3yC0vTCgxFVLwqYm2fXKpPSod6HwbeVvz90KQU=; b=PfNJ5d77vxIlv6zrbHOnUiGfy7o5nnpzBiOSYJs9IKl8lWFejiVngQI3cqdlGXsGQBAn+S lKWQXcFpP952rZXHcUSoI4kv4uUsGLqDONHEs+vKTwI9HHM4mStE6tZ6zavXgk9sivpv27 qppYqTRjYOyluelBZq1AsYwHRUxhE3Q495BGXlUbA441ZCZlOCbU9Z7+NgWshtsV6w0Z29 do8q66FRzHGSdCv6gvVdPJAmuRDz2f9OCr+HcdhsuxnJvWdocLF+EokBuUU6Y5YmTle8ud fi9huGPRohgaub3FHdPZL1L+Y+BpdTAlrlONBot5H7LO8qhj0uAAik799EBesQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1763588677; a=rsa-sha256; cv=none; b=uPwcoDuPb2us/pTflYKW0G4Uv4qGo5Iv85rwa+LDHNr1nCjqmlBzEuG64S+btn2EA42zrc cRKuknILZNmUZ/6oVZQfypmRpMJBevNAd/7uhStjesiutyHqUOJU0sMOy5JWBlY3AkyUGm HHcthLOSwVPfmQdTGu7N8O1v+dvgg6jQkEX3Zc+cqZ1nSXCJKqtH2yr4FmyM3/CMyHJ8OA qRjpg7Zva45hGSoMbfOcKZ15EuGAYHb498cCVVCj4fSXAOFhc+r0LRo1EHmQFR+eMRstmS e9o85PUBhAneX2datDfo9nQoAC295gUTXlNn3UKUtT3NDskcw2+PhdhEF3cL5Q== 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 4dBZks1FJvzxm4 for ; Wed, 19 Nov 2025 21:44:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 33c7b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 19 Nov 2025 21:44:37 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Wanpeng Qian From: Colin Percival Subject: git: ecfb0e51b212 - releng/15.0 - nda: React to namespace change events List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: ecfb0e51b21259a679519d666dbdb52e9b18c539 Auto-Submitted: auto-generated Date: Wed, 19 Nov 2025 21:44:37 +0000 Message-Id: <691e3a45.33c7b.3ddda341@gitrepo.freebsd.org> The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=ecfb0e51b21259a679519d666dbdb52e9b18c539 commit ecfb0e51b21259a679519d666dbdb52e9b18c539 Author: Wanpeng Qian AuthorDate: 2025-11-18 15:24:23 +0000 Commit: Colin Percival CommitDate: 2025-11-19 21:37:15 +0000 nda: React to namespace change events Register for AC_GETDEV_CHANGED. When we receive a namespace notification, we only create a new device if it was unconfigured. If it was configured, generate this async event. Rely on the fact that we reconstruct namespace to just get the data from the identify data and call disk_resised. Approved by: re (cperciva) Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D33032 (cherry picked from commit 86d3ec359a56d1b5d015718bd19ef4bda681a032) (cherry picked from commit 9a465b37ea17642d45597d4ee7d3283b02dfa6f0) --- sys/cam/nvme/nvme_da.c | 29 ++++++++++++++++++++--------- sys/cam/nvme/nvme_xpt.c | 2 ++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/sys/cam/nvme/nvme_da.c b/sys/cam/nvme/nvme_da.c index 330f4ca66e1e..2eb43809f4b1 100644 --- a/sys/cam/nvme/nvme_da.c +++ b/sys/cam/nvme/nvme_da.c @@ -673,12 +673,11 @@ ndasetgeom(struct nda_softc *softc, struct cam_periph *periph) } static void -ndaasync(void *callback_arg, uint32_t code, - struct cam_path *path, void *arg) +ndaasync(void *callback_arg, uint32_t code, struct cam_path *path, void *arg) { - struct cam_periph *periph; + struct cam_periph *periph = callback_arg; + struct nda_softc *softc; - periph = (struct cam_periph *)callback_arg; switch (code) { case AC_FOUND_DEVICE: { @@ -709,17 +708,29 @@ ndaasync(void *callback_arg, uint32_t code, "due to status 0x%x\n", status); break; } + case AC_GETDEV_CHANGED: + { + int error; + + softc = periph->softc; + ndasetgeom(softc, periph); + error = disk_resize(softc->disk, M_NOWAIT); + if (error != 0) { + xpt_print(periph->path, "disk_resize(9) failed, error = %d\n", error); + break; + } + break; + + } case AC_ADVINFO_CHANGED: { uintptr_t buftype; + softc = periph->softc; buftype = (uintptr_t)arg; if (buftype == CDAI_TYPE_PHYS_PATH) { - struct nda_softc *softc; - - softc = periph->softc; disk_attr_changed(softc->disk, "GEOM::physpath", - M_NOWAIT); + M_NOWAIT); } break; } @@ -997,7 +1008,7 @@ ndaregister(struct cam_periph *periph, void *arg) * Register for device going away and info about the drive * changing (though with NVMe, it can't) */ - xpt_register_async(AC_LOST_DEVICE | AC_ADVINFO_CHANGED, + xpt_register_async(AC_LOST_DEVICE | AC_ADVINFO_CHANGED | AC_GETDEV_CHANGED, ndaasync, periph, periph->path); softc->state = NDA_STATE_NORMAL; diff --git a/sys/cam/nvme/nvme_xpt.c b/sys/cam/nvme/nvme_xpt.c index f6667df07be0..c22d5fed350c 100644 --- a/sys/cam/nvme/nvme_xpt.c +++ b/sys/cam/nvme/nvme_xpt.c @@ -463,6 +463,8 @@ device_fail: if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0) done_ccb->ccb_h.func_code = XPT_GDEV_TYPE; xpt_action(done_ccb); xpt_async(AC_FOUND_DEVICE, path, done_ccb); + } else { + xpt_async(AC_GETDEV_CHANGED, path, NULL); } NVME_PROBE_SET_ACTION(softc, NVME_PROBE_DONE); break;