From nobody Fri Apr 24 15:28:52 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 4g2H1Q1kZ5z6bSCs for ; Fri, 24 Apr 2026 15:28:58 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g2H1Q08Jmz3CmJ for ; Fri, 24 Apr 2026 15:28:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777044538; 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=Ns2aFVIabdUt0vhhbSOdr0ZDpj2rjTXuXuI4hDCpGA0=; b=qAH4O3k+RkQAoYRcwebUpmLo2jclDJGIoGNSNfCtSmVZKRSpBejFuSWWNCZAq+iT74H3Bl g1bO/wTQPi6mScV+N1diX7PwCDjBXCiq83kJjy2XtQeclFceshnfyHTtdhmOBIMUX8x277 N3Zdcg9Pg4luyi9igBLKYBzV1djRIiPw8RmmGcDnetuUnIPm4CTaD/wGMrW4mzXfgnsLOn ewV24+O6Sg/NcRpT4Go3FhwMnEZ1fNR8bGTqBuAxH2NtPu+rMBZKXR+jIXwj2kO/AE5WHV wJi7w9KByHca9eJjmlZwaB0bnySmvbs2mZ3VdD704i2zfZcQEefivglimekvpA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777044538; a=rsa-sha256; cv=none; b=LeRH6wqh9wGM4XuocSItRvjiBLvsfUw+wZpQpyEcDpL3+YbI+x2wGXrL+K82UY5mtEc97c laVZkGhW9DjcdKfI/8wMiBMSPeUCenJjC1plcPwzq4BqJsjxNjD/oMfYkIY69+FSDg99p+ EJsgJo3hNejv+1/OSwyyAsWAMiML1Vpb6M+wP2uzWxlt/LI4ZbdckA2Eu8KhEPCaaORQyj Sr8HRzYdu0zJsNlhsar5Bzt2Jj5sfcFhdsbuBJlULlUfsNbUNad3lsTUv9W0QCPUlynF5C vllBnduY572T5DsBLhw2ODjuHtP+yamNjoQ86xFQbLyeAZpw2eYbQ06WFd4Zqg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777044538; 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=Ns2aFVIabdUt0vhhbSOdr0ZDpj2rjTXuXuI4hDCpGA0=; b=Ghct/sm27mBV0ZCxEafayCMVMSqRDCXXbd4wjy+8bijFtI4xYz1A3rLnOj2C9ZxAK0RuSS Aij/cWp0HduW8CPU2Jgn24K0fsCnseDccDU4v6pj+ZxnoIo9sRuO7iHj+ZxeB3vXe4UPaq DAhzHyDUQ/KcqowWLYDWTfwVJiYNfBVS/akcLb73RW1eAoLuo58r1z0id+cwdiuFsri6mM Nb+r5AfFgIfP98wYwHu2WpL6fiatc5m/IT7lfRNQViYP+6+RnenF5YQvktzOtAQgkVhJHt mwWotH+a8raGv7TFF1pH+4XsM8GcKq1nmOMCAhXMS4Xbltp7GqLSf7wjKAdDpg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2H1P6NbLz17RF for ; Fri, 24 Apr 2026 15:28:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 35f4e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 24 Apr 2026 15:28:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: d37cbfe3ef55 - stable/15 - nvme: Abstract out function to obtain a disk ident string from cdata 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: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: d37cbfe3ef550aa36693d859bc4580891d16701a Auto-Submitted: auto-generated Date: Fri, 24 Apr 2026 15:28:52 +0000 Message-Id: <69eb8c34.35f4e.1ebd07b7@gitrepo.freebsd.org> The branch stable/15 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d37cbfe3ef550aa36693d859bc4580891d16701a commit d37cbfe3ef550aa36693d859bc4580891d16701a Author: John Baldwin AuthorDate: 2025-11-17 18:21:39 +0000 Commit: John Baldwin CommitDate: 2026-04-24 15:26:37 +0000 nvme: Abstract out function to obtain a disk ident string from cdata This will permit sharing the code with nvmf(4). Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D53338 (cherry picked from commit 8d2a50bb38051fefeb1427fdbfd249f2829310d8) --- sys/dev/nvme/nvme.h | 19 +++++++++++++++++++ sys/dev/nvme/nvme_ctrlr.c | 21 +-------------------- sys/dev/nvme/nvme_ns.c | 2 +- sys/dev/nvme/nvme_private.h | 1 - 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h index 8e69c0ffe339..85b9658b755a 100644 --- a/sys/dev/nvme/nvme.h +++ b/sys/dev/nvme/nvme.h @@ -1912,6 +1912,7 @@ void nvme_sc_sbuf(const struct nvme_completion *cpl, struct sbuf *sbuf); void nvme_strvis(uint8_t *dst, const uint8_t *src, int dstlen, int srclen); #ifdef _KERNEL +#include struct bio; struct thread; @@ -2000,6 +2001,24 @@ nvme_ctrlr_has_dataset_mgmt(const struct nvme_controller_data *cd) return (NVMEV(NVME_CTRLR_DATA_ONCS_DSM, cd->oncs) != 0); } +/* + * Copy the NVME device's serial number to the provided buffer, which must be + * at least DISK_IDENT_SIZE bytes large. + */ +static inline void +nvme_cdata_get_disk_ident(const struct nvme_controller_data *cdata, uint8_t *sn) +{ + _Static_assert(NVME_SERIAL_NUMBER_LENGTH < DISK_IDENT_SIZE, + "NVME serial number too big for disk ident"); + + memmove(sn, cdata->sn, NVME_SERIAL_NUMBER_LENGTH); + sn[NVME_SERIAL_NUMBER_LENGTH] = '\0'; + for (int i = 0; sn[i] != '\0'; i++) { + if (sn[i] < 0x20 || sn[i] >= 0x80) + sn[i] = ' '; + } +} + /* Namespace helper functions */ uint32_t nvme_ns_get_max_io_xfer_size(struct nvme_namespace *ns); uint32_t nvme_ns_get_sector_size(struct nvme_namespace *ns); diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index 12b39ce3b3ac..16e67b127c9c 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include @@ -1264,24 +1263,6 @@ nvme_ctrlr_poll(struct nvme_controller *ctrlr) nvme_qpair_process_completions(&ctrlr->ioq[i]); } -/* - * Copy the NVME device's serial number to the provided buffer, which must be - * at least DISK_IDENT_SIZE bytes large. - */ -void -nvme_ctrlr_get_ident(const struct nvme_controller *ctrlr, uint8_t *sn) -{ - _Static_assert(NVME_SERIAL_NUMBER_LENGTH < DISK_IDENT_SIZE, - "NVME serial number too big for disk ident"); - - memmove(sn, ctrlr->cdata.sn, NVME_SERIAL_NUMBER_LENGTH); - sn[NVME_SERIAL_NUMBER_LENGTH] = '\0'; - for (int i = 0; sn[i] != '\0'; i++) { - if (sn[i] < 0x20 || sn[i] >= 0x80) - sn[i] = ' '; - } -} - /* * Poll the single-vector interrupt case: num_io_queues will be 1 and * there's only a single vector. While we're polling, we mask further @@ -1534,7 +1515,7 @@ nvme_ctrlr_ioctl(struct cdev *cdev, u_long cmd, caddr_t arg, int flag, break; case DIOCGIDENT: { uint8_t *sn = arg; - nvme_ctrlr_get_ident(ctrlr, sn); + nvme_cdata_get_disk_ident(&ctrlr->cdata, sn); break; } /* Linux Compatible (see nvme_linux.h) */ diff --git a/sys/dev/nvme/nvme_ns.c b/sys/dev/nvme/nvme_ns.c index f50b8993a362..170fab34ad81 100644 --- a/sys/dev/nvme/nvme_ns.c +++ b/sys/dev/nvme/nvme_ns.c @@ -90,7 +90,7 @@ nvme_ns_ioctl(struct cdev *cdev, u_long cmd, caddr_t arg, int flag, } case DIOCGIDENT: { uint8_t *sn = arg; - nvme_ctrlr_get_ident(ctrlr, sn); + nvme_cdata_get_disk_ident(&ctrlr->cdata, sn); break; } case DIOCGMEDIASIZE: diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h index d499c6f34ca8..52f84f899c6e 100644 --- a/sys/dev/nvme/nvme_private.h +++ b/sys/dev/nvme/nvme_private.h @@ -560,7 +560,6 @@ void nvme_notify_new_controller(struct nvme_controller *ctrlr); void nvme_notify_ns(struct nvme_controller *ctrlr, int nsid); void nvme_ctrlr_shared_handler(void *arg); -void nvme_ctrlr_get_ident(const struct nvme_controller *ctrlr, uint8_t *sn); void nvme_ctrlr_poll(struct nvme_controller *ctrlr); int nvme_ctrlr_suspend(struct nvme_controller *ctrlr);