From nobody Fri Sep 25 21:43:18 2026 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 4hs42G2Kb3z6ty7C for ; Fri, 25 Sep 2026 21:43:18 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hs42G1dgtz3RCY for ; Fri, 25 Sep 2026 21:43:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790372598; 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=123RqBAYNCvVOYzX2zRP1ybqhWDQytRDek1WZBmf/QQ=; b=md7xLkZdxtxnTys8qcaKPpDsVzoQXQ4PzdcsUR5obV/+6EFTbpC5HqirZOhe9/Zr3POJ59 rpcCOhM305KTMf6TRq2h2T2uW5D5UaEF8ytv4LPf1PPPRPfGBEp3wyXKgbkfT0EOoLDzfZ z7sbu/9RsR9WhuAMo+/Cua45X66KbxjQkjOLZzx2hYRtkC8jKXnd0vCHyStPFTinAYO0cm SeDeBFgTM5yaxaDrb7duxUDb2e8EOqnhs47/g+5g5YAFI1fiSgBCamjSpRRkd5nE2ZkcOA 5S1jm2gBS3ZmrdMbml8crinzrCLg54420lUaFDvx6QoGgQ7zKTILfZ7pu6b/Qg== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790372598; b=xiZSQlkoGe6Tov27Hx5cT2vl6/wZFOSnYcy41w0LZr52ANZXOdS+0LQk0w8iPx/kxWpGFK oT9X4iuVl5BMFaJ32RkPRVOAIpfwVrsd/EbpgriQzu2WvfKeJijdDo8WM7InsFr23i4lXR f/O/G4TDCPm/NdH8wEcBvo/kBZIaEQQjwYTgTI1toaiUxMtl+CXIIxFpyFqnKn7teCZXly Mu6fJ0V8aCw4jS5AtJDQHxvTJgyCWXvLpRo61SbKQ7YmFPAlF8MJBIxe210rgauDE/URrR GXdaYT5UIDcqfE186KgaAc4rTKRmt3a2mflkKzdbReeZK79t/xKm9yOffZnCEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790372598; 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=123RqBAYNCvVOYzX2zRP1ybqhWDQytRDek1WZBmf/QQ=; b=nV6oKk+G0/LV9cmhZUfnfxA8qEyMCA4Dts6YjEbHxWb9LtEtyAgh7jYGSvQqlCg/bJ5zZt 67LCG9zvgt2/W+sf4LvNzr6FMsZ51dl+FEMpjNYBpQ7fJVnXeRB8k4ciUiYUqB9ojXgmAo fh0GpD0zFV2hV88QpA/3A9EoL3OTsUhsvD5lcHWQBkQ8aZrWZV/D79pCTbC6hkEX464hMR B/b17SEpYBFfxoV7luM6vd3oQ2YhmQI2CESS97nZrg/LsGTdxXUN1+naWbV0qnsSde8xLU Bbj3ZohbtEXPjOLvoSqyBeVxb3MClpRqdaSHItVR5r1bSOUENz2AgolG0vqE/g== 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 4hs42G0jsfzRWZ for ; Fri, 25 Sep 2026 21:43:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43456 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 25 Sep 2026 21:43:18 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Abdelkader Boudih Subject: git: 130739e33acc - main - nvmf: factor out the pending request abort loop 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 List-Id: 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: seuros X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 130739e33acc1b55f6da297fdebb693d9d8feea8 Auto-Submitted: auto-generated Date: Fri, 25 Sep 2026 21:43:18 +0000 Message-Id: <6ab6eaf6.43456.16a993cc@gitrepo.freebsd.org> The branch main has been updated by seuros: URL: https://cgit.FreeBSD.org/src/commit/?id=130739e33acc1b55f6da297fdebb693d9d8feea8 commit 130739e33acc1b55f6da297fdebb693d9d8feea8 Author: Abdelkader Boudih AuthorDate: 2026-09-25 21:42:23 +0000 Commit: Abdelkader Boudih CommitDate: 2026-09-25 21:42:23 +0000 nvmf: factor out the pending request abort loop The routine is entered with the namespace lock held and drops it before completing the requests, which preserves the existing locking. Reviewed by: imp, adrian Differential Revision: https://reviews.freebsd.org/D60019 --- sys/dev/nvmf/host/nvmf_ns.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/sys/dev/nvmf/host/nvmf_ns.c b/sys/dev/nvmf/host/nvmf_ns.c index 572649870e05..12db071b891b 100644 --- a/sys/dev/nvmf/host/nvmf_ns.c +++ b/sys/dev/nvmf/host/nvmf_ns.c @@ -433,14 +433,15 @@ nvmf_reconnect_ns(struct nvmf_namespace *ns) } } -void -nvmf_shutdown_ns(struct nvmf_namespace *ns) +/* Called with ns->lock held; drops it. */ +static void +nvmf_ns_abort_pending_bios(struct nvmf_namespace *ns) { TAILQ_HEAD(, bio) bios; struct bio *bio; - mtx_lock(&ns->lock); - ns->shutdown = true; + mtx_assert(&ns->lock, MA_OWNED); + TAILQ_INIT(&bios); TAILQ_CONCAT(&bios, &ns->pending_bios, bio_queue); mtx_unlock(&ns->lock); @@ -456,11 +457,16 @@ nvmf_shutdown_ns(struct nvmf_namespace *ns) } void -nvmf_destroy_ns(struct nvmf_namespace *ns) +nvmf_shutdown_ns(struct nvmf_namespace *ns) { - TAILQ_HEAD(, bio) bios; - struct bio *bio; + mtx_lock(&ns->lock); + ns->shutdown = true; + nvmf_ns_abort_pending_bios(ns); +} +void +nvmf_destroy_ns(struct nvmf_namespace *ns) +{ if (ns->cdev->si_drv2 != NULL) destroy_dev(ns->cdev->si_drv2); destroy_dev(ns->cdev); @@ -477,18 +483,7 @@ nvmf_destroy_ns(struct nvmf_namespace *ns) } /* Abort any pending I/O requests. */ - TAILQ_INIT(&bios); - TAILQ_CONCAT(&bios, &ns->pending_bios, bio_queue); - mtx_unlock(&ns->lock); - - while (!TAILQ_EMPTY(&bios)) { - bio = TAILQ_FIRST(&bios); - TAILQ_REMOVE(&bios, bio, bio_queue); - bio->bio_error = ECONNABORTED; - bio->bio_flags |= BIO_ERROR; - bio->bio_resid = bio->bio_bcount; - biodone(bio); - } + nvmf_ns_abort_pending_bios(ns); mtx_destroy(&ns->lock); free(ns, M_NVMF);