From nobody Tue Nov 18 21:04:52 2025 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 4d9xvT4T6hz6GY2L for ; Tue, 18 Nov 2025 21:04:53 +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 4d9xvT045bz3lBr for ; Tue, 18 Nov 2025 21:04:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763499893; 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=XckSYrT0AlXW6YxjCxQx4CVe6JaJW9ob3eOT6giBIHE=; b=qdJIeTpt9OPF9rj4xBwVGdUT35CBG3SFtfZG/uZm9CT8/hiSwfRXuxQ/RAB6Va/4w1Veym eY7z/HcF0yFYsolicmI9i49hVhH7eXeXhUB1bve03osAv8fEAAUwS5HROaLf8tHvibJ/dT v1jM3RKy2Q/jxUxwWf+Bz33nUzj1qRgvplxhkHLn5AfzvHgOg1rP8gOG0YjytLeMEgEcl0 xW+/4xcOoqdAbrN3xTDusWgKB4R8wLJJr1wHK8JS3Sa2c4A3pCCeptjCDfll9alX8KbLDV NSh7CWPFkv2HADd3OsqFGxy4zLkoQFZLXwjE/zK/xjr9sWkiqS2dgbSwcg5upA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1763499893; 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=XckSYrT0AlXW6YxjCxQx4CVe6JaJW9ob3eOT6giBIHE=; b=Aw6ysrzX8mFtgo4t1WWJQ9KYE3HeXtNadihOwd3s0JRLtbuVp2xEc4Ac7/6zgawSsvPTZh VAg+j6oE0QWwTlSuncwfMhmzsp55NSa+469uSwZIOeqfjpIIxXuh9DZ3ofq5sZOBhJy0nU qCbQ7kTsWjqTxsTbt5Iq0xcxqKU0WiD6+ZH1xbiSlQnQHb61UwS5dRpRTwawLcafzfBbsg pvQax0PCnHJ+DXqMVewirLl0A7TrHqNqDo6VtJFrMSGI542YsizNNm7LMqMxHjRZmMzcNT sEQ7xdJi0RS4pBikjCLpA8Rg38CxT4zZrWMeBIYnQ6KF8b3bl3fba8XMGpgadg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1763499893; a=rsa-sha256; cv=none; b=i+q6e3Nq4o0pZ4LTYAvif93+Qm4PX3diQJOOGTHMMiuOAKr9j6mOOZl9xT/hgBfT68XyvD e/mRil3IreMAQ9Wrm0rrgLuAvfK8VejRnp2f7LqnyBWg+VFYpDRkTrn+3e+Je9/BotyIQQ bgYszVFcT/kB09mCSBCPPu8wQAUxB8fppGoMPwMzNM27UkDE4KKlvXMzD5tbLwB+GnRwyg aLCeT/rHm8QR9gDNJ80sAwey8A1v9AuGUEbuexnCdHoq5VVMt0KSyEtBp3taOKTOYfq54T i/5Z4IyhS1m600tRTuazpruf3diu/3PrxY88I8+pEe3A/jqyVlyPY/Ztm5QOsw== 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 4d9xvS6k6sz18lr for ; Tue, 18 Nov 2025 21:04:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 35903 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 18 Nov 2025 21:04:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Wanpeng Qian From: Warner Losh Subject: git: 86d3ec359a56 - main - nda: React to namespace change events 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-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/main X-Git-Reftype: branch X-Git-Commit: 86d3ec359a56d1b5d015718bd19ef4bda681a032 Auto-Submitted: auto-generated Date: Tue, 18 Nov 2025 21:04:52 +0000 Message-Id: <691cdf74.35903.51f3c7fc@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=86d3ec359a56d1b5d015718bd19ef4bda681a032 commit 86d3ec359a56d1b5d015718bd19ef4bda681a032 Author: Wanpeng Qian AuthorDate: 2025-11-18 15:24:23 +0000 Commit: Warner Losh CommitDate: 2025-11-18 20:32:28 +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. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D33032 --- 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 3e9efabe33cd..506fce3d99d3 100644 --- a/sys/cam/nvme/nvme_da.c +++ b/sys/cam/nvme/nvme_da.c @@ -674,12 +674,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: { @@ -710,17 +709,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; } @@ -998,7 +1009,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;