From nobody Fri Jan 31 20:49:39 2025 X-Original-To: dev-commits-src-main@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 4Yl7LC6JT8z5n4bC; Fri, 31 Jan 2025 20:49:39 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yl7LC5ZsVz3VVr; Fri, 31 Jan 2025 20:49:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1738356579; 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=6ZmZIMo52Umr/wPINzLKf723K0AFZ97lfazZ6Ccpt14=; b=Z8DKGy+eGfjAg1YzIZ1nDMyxyIwXgt8zl0JcwZ5Sxn0wZj4hvfBwYss6patKCphI3G2Icb PcvXCRfae2c4IWIQ7cJ7eFCpLwaIB/LJztH3/9dxGtFlphuSXcLyJydNLo57tRzm3gEc4e 5ab6nmBdGUeo5En+TtSI4lNzJJzw2akRXl1kjPSyR0G0Q7qLmVtonUZEenlZq9Q7bo8Rov /6zxfWXrgdCtQ4OcHLzSZ5SoC+nLczWkJSUUnO+a0G1ylXOWWbzfK/9PZwqB5swHbAm6DF RPeTQ1mKo+UFVV5BFln3UCCeTPjpoY0+OFvakwXEyglVTPMNKmKcvbN9NJa5Vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1738356579; 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=6ZmZIMo52Umr/wPINzLKf723K0AFZ97lfazZ6Ccpt14=; b=asiiq+lwWaaMQ9RMcJy/Ab8B0ieq4qcVk6Q7681WyP+ATNWDWgzxiN6h21xPaQDXs09RA/ MjU0JIWgOynRSX+ZGQMMPxolbHZIX/PcpoLcS7rNi3swQdhZg0aBHbE++9eft4BWpil8kv x39SGeqL+6OSZrte6PFtlG2/oFvDowSnmxJl46atO8wIaXHui3CaMAmDmRQR+o1Lb+OxZJ VuYl1Se3cZN2wUXwYb9OltsK8ktb/dbGfKHMU9ets1SJXVdSukFJBHVMZ8rtWhVCgAM+9k LYTx5Rd+ZP8ZUrQzRi21B/ugnGs3PMF9di1LFLJRF6Fh4vBsva91u+S8ZdX8Uw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1738356579; a=rsa-sha256; cv=none; b=vyTH9lepGM/Wa+hyMADSuSdd5V7UXc36SIvHS8gcGCX1ouYRHqlpqcNzsNpvn2aoW2LXDZ /bKPaAlHuPUVEm4ZTcyXFWVcd561WAvsRoeH5hPPRJocKzcTMTI43bX2pJZ2nxfnKCoQ+g CWKt95wSG2ScdUG8ehvhjp3Mwd6+MTcbilEqgdxPr/e3EkoPtL8wf0+o9dHzXfrgqsde0t nQ8B2/P+/XFqGqBmfoaie5L2HA4elvbV02gUwVEWagvoOVz5rSEdTs+bEGIo1Q6QdrWfTk NhzpQzkYR5WHuQRjaKwo6VXZuiJIPbPAnU7cQzBIv32oMELatuhIvlhoKSlq1w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Yl7LC57k8zZ2p; Fri, 31 Jan 2025 20:49:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50VKnd2M063326; Fri, 31 Jan 2025 20:49:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50VKndqK063323; Fri, 31 Jan 2025 20:49:39 GMT (envelope-from git) Date: Fri, 31 Jan 2025 20:49:39 GMT Message-Id: <202501312049.50VKndqK063323@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 4298ce72f650 - main - nvme/nvmf: Add NVME_GET_CONTROLLER_DATA ioctl to fetch cached cdata List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 4298ce72f650f1e93b4f43681446df2c1f8cab57 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=4298ce72f650f1e93b4f43681446df2c1f8cab57 commit 4298ce72f650f1e93b4f43681446df2c1f8cab57 Author: John Baldwin AuthorDate: 2025-01-31 20:46:49 +0000 Commit: John Baldwin CommitDate: 2025-01-31 20:46:49 +0000 nvme/nvmf: Add NVME_GET_CONTROLLER_DATA ioctl to fetch cached cdata Both nvme and nvmf cache a copy of the controller's identify data in the softc. Add an ioctl to fetch this copy of the cdata. This is primarily useful for allowing commands like 'nvmecontrol devlist' to work against a disconnected Fabrics host. Reviewed by: dab, imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D48218 --- sys/dev/nvme/nvme.h | 1 + sys/dev/nvme/nvme_ctrlr.c | 3 +++ sys/dev/nvmf/host/nvmf.c | 3 +++ 3 files changed, 7 insertions(+) diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h index 5a18d69c96f4..a08abcb4aec6 100644 --- a/sys/dev/nvme/nvme.h +++ b/sys/dev/nvme/nvme.h @@ -40,6 +40,7 @@ #define NVME_RESET_CONTROLLER _IO('n', 1) #define NVME_GET_NSID _IOR('n', 2, struct nvme_get_nsid) #define NVME_GET_MAX_XFER_SIZE _IOR('n', 3, uint64_t) +#define NVME_GET_CONTROLLER_DATA _IOR('n', 4, struct nvme_controller_data) #define NVME_IO_TEST _IOWR('n', 100, struct nvme_io_test) #define NVME_BIO_TEST _IOWR('n', 101, struct nvme_io_test) diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index 29c165899f7f..98a9e62f851b 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -1443,6 +1443,9 @@ nvme_ctrlr_ioctl(struct cdev *cdev, u_long cmd, caddr_t arg, int flag, case NVME_GET_MAX_XFER_SIZE: *(uint64_t *)arg = ctrlr->max_xfer_size; break; + case NVME_GET_CONTROLLER_DATA: + memcpy(arg, &ctrlr->cdata, sizeof(ctrlr->cdata)); + break; /* Linux Compatible (see nvme_linux.h) */ case NVME_IOCTL_ID: td->td_retval[0] = 0xfffffffful; diff --git a/sys/dev/nvmf/host/nvmf.c b/sys/dev/nvmf/host/nvmf.c index 94205666accf..befe93dbbbc0 100644 --- a/sys/dev/nvmf/host/nvmf.c +++ b/sys/dev/nvmf/host/nvmf.c @@ -1107,6 +1107,9 @@ nvmf_ioctl(struct cdev *cdev, u_long cmd, caddr_t arg, int flag, case NVME_GET_MAX_XFER_SIZE: *(uint64_t *)arg = sc->max_xfer_size; return (0); + case NVME_GET_CONTROLLER_DATA: + memcpy(arg, sc->cdata, sizeof(*sc->cdata)); + return (0); case NVMF_RECONNECT_PARAMS: nv = (struct nvmf_ioc_nv *)arg; return (nvmf_reconnect_params(sc, nv));