From nobody Mon Feb 2 13:31:25 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 4f4SFB09zMz6QVZy for ; Mon, 02 Feb 2026 13:31:26 +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" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f4SF95dzpz41qY for ; Mon, 02 Feb 2026 13:31:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770039085; 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=jIVzR9/VXBCB9nNvlarQIXMzUJMXzIEIP7gdXNv1W8A=; b=wenw/Op5X3QviCCFo1iO718Z16PEhxgxTLd0fMf4rInIooDeN1TfrzeYZ1ChAe5RGxCQCR byLOZGMxxx2ZjnKy8TYxwb6t6YSxftoSRMtdbdJg1xy44pdUSqZwhKDk9aUEPJl3l9LlXI zjkKIPQ5tcCmgnrcM9XZrezHzrMTAhpiRuo9MGJOLjQD002EAY5cgYgnxNkK41k4NGzHWl kbgwaqT3c7bftcfUpvZxYSAFpFskSs+6a/LuNKsVXnc2rSEFp3ZgKBRbENlpdoMtgZan/6 BOWGpfKjIi099n/Tev5FcVe/l5B9UfnxirPPxJtw7da7VsCSHrCoybC3v2/v6w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770039085; a=rsa-sha256; cv=none; b=r6XtIb2DRH1K6tNCyeofHFn6C40bHtrQWEI/itSCA4kGQvyoWma+49RtqRxNtVTtozMb/r wAcKGkIKwYOnndfDYcXoRr3xpDUaIjBRwa3iV6cDpfyZ/lWZfa/bpq131TDSnUXP6GBc3f knz6GPZrQ78H7u7Pcv93xni5sd6f+fngS1b1uMJsZDc0jtTN5vsPFhryAi0Z7OeHvjsUkt zHf1PNhh7tqVGnsBymIqcniDhlAeCLUkpu8ysrY7mMZ85GNy5bl2dmBhuFerbPknYvCXie SoqiG/JxfiyHTQODFU0tQnkK8ygSFIu+8ArwqSQXpxHXn5kNl6hEId+aL6/GzQ== 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=1770039085; 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=jIVzR9/VXBCB9nNvlarQIXMzUJMXzIEIP7gdXNv1W8A=; b=IFzwAHYHjFbrzqAYS6S99RKvSvu6yFoUIRXwojBUmtGOUVL1KKPCJpTcd8Lryz6dBOomdr tErm/tQfKLAbHyLbdidtFooOO1k1/P6bfEnYPMEu0Ziuvuu86hRGcBsy6BYLVLwv43+vFO dXTK7r9Bw2VhW2kWN/9b9Lt3zKf1slQQstYcKapUqp2UF3ChArDc7xpNLeTwD5lDOuelKh qJdXxZbnI2BPOhf/y6AnwH310otydrIUl3Uay01nEXdi7HXbRv/kosnCpJeSb/N9bGnIDp A9wdPhUUV1e+tmm2fCN+jili4QKEUQWDMJxxncOKtAI85JPk5aXR2ww6g19Fag== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f4SF93dY1zCKW for ; Mon, 02 Feb 2026 13:31:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 305f3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 02 Feb 2026 13:31:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 350c1232a57a - main - nvmecontrol: telemetry-log --verbose 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: 350c1232a57a64b955a3ae7f9b92dde164d1eb65 Auto-Submitted: auto-generated Date: Mon, 02 Feb 2026 13:31:25 +0000 Message-Id: <6980a72d.305f3.5f7bf47b@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=350c1232a57a64b955a3ae7f9b92dde164d1eb65 commit 350c1232a57a64b955a3ae7f9b92dde164d1eb65 Author: Warner Losh AuthorDate: 2026-02-02 13:30:28 +0000 Commit: Warner Losh CommitDate: 2026-02-02 13:31:21 +0000 nvmecontrol: telemetry-log --verbose Add -v / --verbose to report status report since these things can take minutes to retrieve. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D55019 --- sbin/nvmecontrol/nvmecontrol.8 | 6 +++++- sbin/nvmecontrol/telemetry.c | 24 +++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/sbin/nvmecontrol/nvmecontrol.8 b/sbin/nvmecontrol/nvmecontrol.8 index dc757bcf90c3..61574715a26c 100644 --- a/sbin/nvmecontrol/nvmecontrol.8 +++ b/sbin/nvmecontrol/nvmecontrol.8 @@ -33,7 +33,7 @@ .\" .\" Author: Jim Harris .\" -.Dd July 9, 2025 +.Dd January 31, 2026 .Dt NVMECONTROL 8 .Os .Sh NAME @@ -256,6 +256,7 @@ .Ic telemetry-log .Fl O Ar output-file .Op Fl d Ar data-area +.Op Fl v .Aq Ar device-id .Sh DESCRIPTION NVM Express (NVMe) is a storage protocol standard for SSDs and other @@ -875,6 +876,9 @@ Output file for the data. This parameter is mandatory. .It Fl d Ar data-area The data area is either 1, 2 or 3. +.It Fl v +Verbose output reporing progress. +This log can be quite large and take minutes to retrieve. .El .Sh DEVICE NAMES Where diff --git a/sbin/nvmecontrol/telemetry.c b/sbin/nvmecontrol/telemetry.c index c22d53ecdfed..60bd3e025f3d 100644 --- a/sbin/nvmecontrol/telemetry.c +++ b/sbin/nvmecontrol/telemetry.c @@ -51,6 +51,7 @@ static struct options { const char *outfn; const char *dev; uint8_t da; + bool verbose; } opt = { .outfn = NULL, .dev = NULL, @@ -63,6 +64,8 @@ static const struct opts telemetry_log_opts[] = { "output file for telemetry data"), OPT("data-area", 'd', arg_uint8, opt, da, "output file for telemetry data"), + OPT("verbose", 'v', arg_none, opt, verbose, + "Be verbose about process"), { NULL, 0, arg_none, NULL, NULL } }; #undef OPT @@ -96,7 +99,7 @@ telemetry_log(const struct cmd *f, int argc, char *argv[]) int fd, fdout; char *path; uint32_t nsid; - ssize_t size; + ssize_t size, blocks; uint64_t off; ssize_t chunk; struct nvme_controller_data cdata; @@ -151,13 +154,23 @@ telemetry_log(const struct cmd *f, int argc, char *argv[]) default: errx(EX_USAGE, "Impossible data area %d", opt.da); } - size = (size + 1) * 512; /* The count of additional pages */ + blocks = size + 1; + size = blocks * 512; /* The count of additional pages */ chunk = 4096; - printf("Extracting %llu bytes\n", (unsigned long long)size); + if (opt.verbose) + printf("Extracting %llu bytes %llu blocks\n", (unsigned long long)size, + (unsigned long long)size / 512); + else + printf("Extracting %llu bytes\n", (unsigned long long)size); do { if (chunk > size) chunk = size; + if (opt.verbose && off % 10240 == 0) { + printf("%s: %llu / %llu\r", opt.dev, (unsigned long long)off / 512, + (unsigned long long)blocks); + fflush(stdout); + } read_logpage(fd, NVME_LOG_TELEMETRY_HOST_INITIATED, nsid, 0, 0, true, off, 0, 0, 0, &buf, chunk); if (write(fdout, &buf, chunk) != chunk) @@ -165,6 +178,11 @@ telemetry_log(const struct cmd *f, int argc, char *argv[]) off += chunk; size -= chunk; } while (size > 0); + if (opt.verbose) { + printf("%s: %llu / %llu\n", opt.dev, (unsigned long long)off / 512, + (unsigned long long)blocks); + fflush(stdout); + } close(fdout); close(fd);