From nobody Sat Oct 08 00:00:04 2022 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 4Mklfr51Qdz4fBc4; Sat, 8 Oct 2022 00:00:04 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Mklfr4Hcsz3l4f; Sat, 8 Oct 2022 00:00:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665187204; 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=tQp97V3QEWJV8hH7w0CanyDmlf/xBTIYuKP3ShOWqA0=; b=MD9umAwUXLiTebb93rXGId6eI3jablX10Ir3Aj4kkrZRgnooshlwuHpxt0r9nt7wtxJ/a3 AAxb3rzHwAdqb4DbAFLKJAEe0Hx8STALdJB9vZKFlyAvunAiFl7yHvJTwfm8onl1KUFniA vQ4wm6a5cmMDshYED7MpiBUTAuUXSXutGzj4FruwJdTuDlCDQDiYZyajsna4T94rhoi/r0 5Z9mO8suAUO2CChAHzFJDfK3DvrlKbQWTlUGM9Hw/YW4hc59ovA6q0Gd8HnZBuVrEcVEJh doRH3KjH4D9mmo1aSu+i7QyEjDFmAtXYQmtO2F1thr/Yu86X1MrrtUiX5CzNcg== 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 4Mklfr3L6rzm1p; Sat, 8 Oct 2022 00:00:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 298004jJ086871; Sat, 8 Oct 2022 00:00:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2980048p086868; Sat, 8 Oct 2022 00:00:04 GMT (envelope-from git) Date: Sat, 8 Oct 2022 00:00:04 GMT Message-Id: <202210080000.2980048p086868@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 9c1bec9c21a2 - main - nvmecontrol: improve namespace size unit of devlist command output 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: 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: 9c1bec9c21a2b14ac13b5f0ad6e447c082042e6a Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665187204; 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=tQp97V3QEWJV8hH7w0CanyDmlf/xBTIYuKP3ShOWqA0=; b=Y8SEFXVJ6k06p6rBWJ8pZ2AiXS2dcNtlP+4DeDZCcMUanrfiZcUGi7xndaepRSyidDqeTU ahCKvKgpsBVcKJv7MHSKEGk4etTW0vmNIBXfj7TCvbZKKNuaqb+42dQ3c9T0bF+9HAdhCq pFu1agkdLDJgeq+38X3fbk3vz+FImmgaHLbijcwhd6WMBmmlZsvrLr17SoeULD04SfIzZ2 eVo5yJERn2UlNYueSoYC+qNEy+xBfksm0QeT5A+IK87HNFbGGNzuQA/zO3z1TTk6KBRH24 Z29/b9q7nG3IpIrCCNNp/84XDrTx3zmIPauJc2+wfECjmy906k7uThC+kQGnwA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1665187204; a=rsa-sha256; cv=none; b=wRu8esV/31h5LEA+3tCCTQlHQ8cij5QTiG8tIV+LdQCV2eWQm2XNCUwjuaDCoZfNgrrCVf 3wug6uN6GMjSfgbyUtbIcwBDre93yxxvYFhfnSns7GLi9U6BlZoqaDDjE05xEafWtJOU/K PCLn+KgCnSc21tnvhQXGIUBxZ8XJvpyCMkSj4Ogf7nIsMEsxFUkzEHb8JfnJPvzKiZ0ODe /l6k8mCKWFyiPzMQtrjQszkZBJY5qqVp7KJkS652gNZgcARTOSZnlg4YlpNIQ3pd2SschD qf/0d5dEyWMJer5XUerGo6vPRe5gmKqPP2vYt1yBiI/u/Ot4IyffTfWFENi7Xw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=9c1bec9c21a2b14ac13b5f0ad6e447c082042e6a commit 9c1bec9c21a2b14ac13b5f0ad6e447c082042e6a Author: Wanpeng Qian AuthorDate: 2022-10-07 23:59:02 +0000 Commit: Warner Losh CommitDate: 2022-10-07 23:59:20 +0000 nvmecontrol: improve namespace size unit of devlist command output Add an option of -h --human to output human readable size unit instead of the fixed unit (MB). Signed-off-by: Wanpeng Qian Reviewed by: imp, bcr Differential Revision: https://reviews.freebsd.org/D32957 --- sbin/nvmecontrol/devlist.c | 37 +++++++++++++++++++++++++++++++------ sbin/nvmecontrol/nvmecontrol.8 | 8 ++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/sbin/nvmecontrol/devlist.c b/sbin/nvmecontrol/devlist.c index 35dd1b47a811..e9df5faadb12 100644 --- a/sbin/nvmecontrol/devlist.c +++ b/sbin/nvmecontrol/devlist.c @@ -34,6 +34,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include #include @@ -51,10 +53,27 @@ __FBSDID("$FreeBSD$"); static cmd_fn_t devlist; +static struct options { + bool human; +} opt = { + .human = false, +}; + +static const struct opts devlist_opts[] = { +#define OPT(l, s, t, opt, addr, desc) { l, s, t, &opt.addr, desc } + OPT("human", 'h', arg_none, opt, human, + "Show human readable disk size"), + { NULL, 0, arg_none, NULL, NULL } +}; +#undef OPT + static struct cmd devlist_cmd = { .name = "devlist", .fn = devlist, - .descr = "List NVMe controllers and namespaces" + .descr = "List NVMe controllers and namespaces", + .ctx_size = sizeof(opt), + .opts = devlist_opts, + .args = NULL, }; CMD_COMMAND(devlist_cmd); @@ -81,7 +100,9 @@ devlist(const struct cmd *f, int argc, char *argv[]) struct nvme_namespace_data nsdata; char name[64]; uint8_t mn[64]; + uint8_t buf[7]; uint32_t i; + uint64_t size; int ctrlr, fd, found, ret; if (arg_parse(argc, argv, f)) @@ -115,11 +136,15 @@ devlist(const struct cmd *f, int argc, char *argv[]) continue; sprintf(name, "%s%d%s%d", NVME_CTRLR_PREFIX, ctrlr, NVME_NS_PREFIX, i + 1); - printf(" %10s (%lldMB)\n", - name, - nsdata.nsze * - (long long)ns_get_sector_size(&nsdata) / - 1024 / 1024); + size = nsdata.nsze * (uint64_t)ns_get_sector_size(&nsdata); + if (opt.human) { + humanize_number(buf, sizeof(buf), size, "B", + HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); + printf(" %10s (%s)\n", name, buf); + + } else { + printf(" %10s (%luMB)\n", name, size / 1024 / 1024); + } } close(fd); diff --git a/sbin/nvmecontrol/nvmecontrol.8 b/sbin/nvmecontrol/nvmecontrol.8 index d6b41889a727..3d130497f1bb 100644 --- a/sbin/nvmecontrol/nvmecontrol.8 +++ b/sbin/nvmecontrol/nvmecontrol.8 @@ -44,6 +44,7 @@ .Sh SYNOPSIS .Nm .Ic devlist +.Op Fl h .Nm .Ic identify .Op Fl v @@ -209,6 +210,13 @@ .Sh DESCRIPTION NVM Express (NVMe) is a storage protocol standard, for SSDs and other high-speed storage devices over PCI Express. +.Ss devlist +List all NVMe controllers and namespaces along with their device nodes. +With the +.Fl h +argument, use unit suffixes: Byte, Kibibyte, Mebibyte, Gibibyte, Tebibyte +and Pebibyte (based on powers of 1024) when showing the disk space. +By default, uses Mebibyte. .Ss identify The identify commands reports information from the drive's .Dv IDENTIFY_CONTROLLER