From nobody Fri Sep 25 21:43:19 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 4hs42J0DWcz6txp0 for ; Fri, 25 Sep 2026 21:43:20 +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 4hs42H2THqz4BP6 for ; Fri, 25 Sep 2026 21:43:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790372599; 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=lufGwQTJ+xWvZGEuMpDTqtsz2uClTjh/u0gg3pKlawM=; b=RQmH/p/NiHhQJ6jLX+u/lh+n/TAjHXjW98+fco53/syTPKKA/oqZFTIifEbplSlPSQsRYL s3JRjGwkEbD9OFpSAYZ1xkls4Q27thjS/C9O0DX+Xt++9bLMZwPMDC219B4nZxndKQPpEF lKM0mdPF5grJFTo4S9rxQen17BMWIdMScluKgTqCPLg7rFs1x/gKQESbZH6RoLPoRxz7yx R//k4KNqDXRzy0u7v0iFK+ud33Ofb36phljNLJTvxSk0QA5+F6e+5Ui8kAzz4JHELilfTA XpZDLsy87eOIUlzh2gTu6rbOSPGjew3/f6r1aKi7N6dOayQFCHrLKyvlTwV/eA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790372599; b=HWlMewJEF8FMia1Q0WJMYuR4Wrw1GwDsmBy3nw78fcqXGmgWR4fjJGXnI7UFeKGuwvfJCX hJchgtWdS5CxzZNp8PGISnHIZrYLp8u9AAxaneU8JWIpV2sIKsywKH8xr8TbDAW61NWFPL c2zFhbrUOaCpWNBd7L7pZG0Hi5irecBIZLyA0K4tbs5xU6GHO70OLxWSa2NSp/Yc982QOU /pT/mQlvYKRxYXGumkTklCg+74jyfgDh5w5+7ghFdJQ5oc66Y6+iGVw+4GTx5VWHbzLzMH n1hH+6uFX90AoxrzlkcpPOiq6fKxgW8s95rv1R5qogFWzLdV6MA7diMlgJeNOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790372599; 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=lufGwQTJ+xWvZGEuMpDTqtsz2uClTjh/u0gg3pKlawM=; b=rfa5n5MxFs34UsmS/wSw4UR1w9yK1mWlOnn1zgVCHZnmSEUAc/dFpI9Zzaq0UNrWe+9F7+ RbtDlIsZ25Cbj6sjx1qIEYcbQO+fD7Mp2bXceMMd1omHj+mnz/xz78mggELCcdZbsfcQNM VoJma1PO5wytO+UsV4+r+2uMhiPWtI+YDBJdqenWmWTAhbdPABfaXVDUCCgqQPXhQGziUO L6N1Yu0RTRylxqCSwRV79aAQzdZ+Q0DhcbjFkkWH/c7jJ1WSyo+hXDqX4o3dmzSSFaZpga WQEy3YHg15+z2XzLxpkDUDW/nIoOcvN5IopNKiJv2RdYTh/f0K3I6qGt+1MagA== 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 4hs42H1Yt3zRRB for ; Fri, 25 Sep 2026 21:43:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43592 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 25 Sep 2026 21:43:19 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Abdelkader Boudih Subject: git: 8a860e8286f2 - main - nvme: collapse the per-counter qpair statistic sysctl handlers 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: 8a860e8286f2e2f20e6eb5b63d9ee1f0a62e0371 Auto-Submitted: auto-generated Date: Fri, 25 Sep 2026 21:43:19 +0000 Message-Id: <6ab6eaf7.43592.417fb4e5@gitrepo.freebsd.org> The branch main has been updated by seuros: URL: https://cgit.FreeBSD.org/src/commit/?id=8a860e8286f2e2f20e6eb5b63d9ee1f0a62e0371 commit 8a860e8286f2e2f20e6eb5b63d9ee1f0a62e0371 Author: Abdelkader Boudih AuthorDate: 2026-09-25 21:42:36 +0000 Commit: Abdelkader Boudih CommitDate: 2026-09-25 21:42:36 +0000 nvme: collapse the per-counter qpair statistic sysctl handlers A single handler that takes the counter's offset within struct nvme_qpair in arg2. No functional change Reviewed by: imp, adrian Differential Revision: https://reviews.freebsd.org/D60020 --- sys/dev/nvme/nvme_sysctl.c | 118 ++++++++------------------------------------- 1 file changed, 20 insertions(+), 98 deletions(-) diff --git a/sys/dev/nvme/nvme_sysctl.c b/sys/dev/nvme/nvme_sysctl.c index 6da1be02f4b2..55c5dfec8701 100644 --- a/sys/dev/nvme/nvme_sysctl.c +++ b/sys/dev/nvme/nvme_sysctl.c @@ -148,105 +148,21 @@ nvme_qpair_reset_stats(struct nvme_qpair *qpair) } static int -nvme_sysctl_num_cmds(SYSCTL_HANDLER_ARGS) +nvme_sysctl_qpair_stat(SYSCTL_HANDLER_ARGS) { - struct nvme_controller *ctrlr = arg1; - int64_t num_cmds = 0; - int i; - - num_cmds = ctrlr->adminq.num_cmds; - - if (ctrlr->ioq != NULL) { - for (i = 0; i < ctrlr->num_io_queues; i++) - num_cmds += ctrlr->ioq[i].num_cmds; - } - - return (sysctl_handle_64(oidp, &num_cmds, 0, req)); -} - -static int -nvme_sysctl_num_intr_handler_calls(SYSCTL_HANDLER_ARGS) -{ - struct nvme_controller *ctrlr = arg1; - int64_t num_intr_handler_calls = 0; - int i; - - num_intr_handler_calls = ctrlr->adminq.num_intr_handler_calls; - - if (ctrlr->ioq != NULL) { - for (i = 0; i < ctrlr->num_io_queues; i++) - num_intr_handler_calls += ctrlr->ioq[i].num_intr_handler_calls; - } - - return (sysctl_handle_64(oidp, &num_intr_handler_calls, 0, req)); -} - -static int -nvme_sysctl_num_retries(SYSCTL_HANDLER_ARGS) -{ - struct nvme_controller *ctrlr = arg1; - int64_t num_retries = 0; - int i; - - num_retries = ctrlr->adminq.num_retries; - - if (ctrlr->ioq != NULL) { - for (i = 0; i < ctrlr->num_io_queues; i++) - num_retries += ctrlr->ioq[i].num_retries; - } - - return (sysctl_handle_64(oidp, &num_retries, 0, req)); -} - -static int -nvme_sysctl_num_failures(SYSCTL_HANDLER_ARGS) -{ - struct nvme_controller *ctrlr = arg1; - int64_t num_failures = 0; - int i; - - num_failures = ctrlr->adminq.num_failures; - - if (ctrlr->ioq != NULL) { - for (i = 0; i < ctrlr->num_io_queues; i++) - num_failures += ctrlr->ioq[i].num_failures; - } - - return (sysctl_handle_64(oidp, &num_failures, 0, req)); -} - -static int -nvme_sysctl_num_ignored(SYSCTL_HANDLER_ARGS) -{ - struct nvme_controller *ctrlr = arg1; - int64_t num_ignored = 0; - int i; - - num_ignored = ctrlr->adminq.num_ignored; - - if (ctrlr->ioq != NULL) { - for (i = 0; i < ctrlr->num_io_queues; i++) - num_ignored += ctrlr->ioq[i].num_ignored; - } - - return (sysctl_handle_64(oidp, &num_ignored, 0, req)); -} - -static int -nvme_sysctl_num_recovery_nolock(SYSCTL_HANDLER_ARGS) -{ - struct nvme_controller *ctrlr = arg1; - int64_t num; + struct nvme_controller *ctrlr = arg1; + size_t off = arg2; + int64_t sum; int i; - num = ctrlr->adminq.num_recovery_nolock; + sum = *(int64_t *)((char *)&ctrlr->adminq + off); if (ctrlr->ioq != NULL) { for (i = 0; i < ctrlr->num_io_queues; i++) - num += ctrlr->ioq[i].num_recovery_nolock; + sum += *(int64_t *)((char *)&ctrlr->ioq[i] + off); } - return (sysctl_handle_64(oidp, &num, 0, req)); + return (sysctl_handle_64(oidp, &sum, 0, req)); } static int @@ -365,35 +281,41 @@ nvme_sysctl_initialize_ctrlr(struct nvme_controller *ctrlr) SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "num_cmds", CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, - ctrlr, 0, nvme_sysctl_num_cmds, "IU", + ctrlr, offsetof(struct nvme_qpair, num_cmds), + nvme_sysctl_qpair_stat, "IU", "Number of commands submitted"); SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "num_intr_handler_calls", - CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, ctrlr, 0, - nvme_sysctl_num_intr_handler_calls, "IU", + CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, ctrlr, + offsetof(struct nvme_qpair, num_intr_handler_calls), + nvme_sysctl_qpair_stat, "IU", "Number of times interrupt handler was invoked (will " "typically be less than number of actual interrupts " "generated due to coalescing)"); SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "num_retries", CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, - ctrlr, 0, nvme_sysctl_num_retries, "IU", + ctrlr, offsetof(struct nvme_qpair, num_retries), + nvme_sysctl_qpair_stat, "IU", "Number of commands retried"); SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "num_failures", CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, - ctrlr, 0, nvme_sysctl_num_failures, "IU", + ctrlr, offsetof(struct nvme_qpair, num_failures), + nvme_sysctl_qpair_stat, "IU", "Number of commands ending in failure after all retries"); SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "num_ignored", CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, - ctrlr, 0, nvme_sysctl_num_ignored, "IU", + ctrlr, offsetof(struct nvme_qpair, num_ignored), + nvme_sysctl_qpair_stat, "IU", "Number of interrupts ignored administratively"); SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO, "num_recovery_nolock", CTLTYPE_S64 | CTLFLAG_RD | CTLFLAG_MPSAFE, - ctrlr, 0, nvme_sysctl_num_recovery_nolock, "IU", + ctrlr, offsetof(struct nvme_qpair, num_recovery_nolock), + nvme_sysctl_qpair_stat, "IU", "Number of times that we failed to lock recovery in the ISR"); SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO,