Gollu Appalanaidu [Sun, 7 Feb 2021 11:30:09 +0000 (17:00 +0530)]
nvme: Round of the metadata size to fit into block count
If device formatted with non-zero metadata size and input
metadata size is less than that it can be fit into mentioned
block count from input then round it of to fit into block count.
Minwoo Im [Fri, 22 Jan 2021 15:20:38 +0000 (00:20 +0900)]
nvme-status: return negative status if !errno
'errno' is set to errno value when system calls are returning with an
error (e.g., ioctl). But, If a command fails without any system call,
then it needs to return the raw negative error value.
For example, if we don't provide any options for connect command:
root@vm:~# nvme connect
need a transport (-t) argument
root@vm:~# echo $?
0
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Minwoo Im [Thu, 14 Jan 2021 13:52:52 +0000 (22:52 +0900)]
zns: print select_all field for Zone Management Send
If Select All field in CDW13 is set to 1, SLBA(Starting LBA) will be
ignored. This patch added a select all field to print out when
successfully done. More informative success log with this field.
Minwoo Im [Sat, 23 Jan 2021 07:21:46 +0000 (16:21 +0900)]
nvme-topology: fix returning invalid value in scan_subsystems()
Let's say we have multiple three subsystems in the system. If we run
a simple 'nvme list' command, then scan_subsystems() will never set the
'ret' value which is a local variable. This should be initialized to a
initial value to avoid invalid value returning.
This patch fixes returning invalid value from the scan_subsystems() in
case of multi-subsystems found.
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Jeff Lien [Tue, 19 Jan 2021 14:31:21 +0000 (08:31 -0600)]
[nvme-cli] WDC plugin fixes for vs-fw-activate-history command
Change to use Power on Hours instead of Timestamp in certain cases
Fix Entry order so entries are displayed oldest to newest
Tomasz Zawadzki [Tue, 14 Jul 2020 08:18:46 +0000 (04:18 -0400)]
skip display of missing controller fields
'Transport' and 'address' fields are determined from sysfs
in legacy_get_pci_bdf(). Meanwhile 'state' field is only set
in scan_ctrl(), rather than legacy_list() path.
This patch fixes display of the fields to be empty.
Then resolves assumption that transport is set,
preventing a segfault.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tomasz Zawadzki [Mon, 13 Jul 2020 14:25:17 +0000 (10:25 -0400)]
print topology for NVMe nodes in kernel and path
This patch enables listing kernel devices (under /dev/ or sysfs)
and the ones available under passed path in a single call.
The additional path parameter is optional and first kernel
device topology is checked. After that legacy_list is called
on that and topologies are joint together.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tomasz Zawadzki [Mon, 29 Jun 2020 13:04:18 +0000 (09:04 -0400)]
add path to nvme list
In SPDK project (spdk.io) it is possible to represent
devices using CUSE as character devices in "/dev/spdk/" directory.
No sysfs entries are generated for those devices.
nvme-cli default behavior is to scan the sysfs for entries on
newer kernels. Previously legacy_list() was used to determine
the topology, but that worked only on "/dev/" path.
To enable listing SPDK devices following changes were made:
- pass path parameter to list command
- before checking sysfs, check the path using legacy_list()
- expand arguments of scan_subsystems and related functions to accept the path
Example:
nvme list -d /dev/spdk/
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Gollu Appalanaidu [Thu, 14 Jan 2021 17:18:56 +0000 (22:48 +0530)]
nvme: fix get lba status command nsid and data len fields
In get lba status admin command, host shall specify valid and
desired namespace, adding NSID field to receive from user and
also assign data len fields as per the given MNDW value.
Gollu Appalanaidu [Wed, 13 Jan 2021 16:27:13 +0000 (21:57 +0530)]
nvme: add support for predictable latency per NVM set log page
This is to add support for LID = 0x0A, Predictable Latency per
NVM Set, used to determine the current window for the specified
NVM Set when Predictable Latency Mode is enabled and any events
that have occurred for the specified NVM Set. For More details
see NVM Express 1.4 Spec. Section 5.14.1.10 ("Predictable Latency
Per NVM Set (Log Identifier 0Ah)")
Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com> Co-Authored-By: Karthik Balan <karthik.b82@samsung.com> Reviewed-by: Steven Seungcheol Lee <sc108.lee@samsung.com>
Minwoo Im [Tue, 12 Jan 2021 23:02:55 +0000 (08:02 +0900)]
nvme-print: fix Namespace ID to decimal format
As kernel sysfs shows nsid as a decimal format, nvme-cli should print
Namespace ID as decimal format. Additionally, of course, the following
two commands results should be consistant:
- nvme list
- nvme list --verbose
The following examples is for case of nsid=32.
root@vm:~/work/nvme-cli.git# ./nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 deadbeef QEMU NVMe Ctrl 32 1.05 MB / 1.05 MB 512 B + 0 B 1.0
root@vm:~/work/nvme-cli.git# ./nvme list --verbose NVM Express Subsystems
Device NSID Usage Format Controllers
------------ -------- -------------------------- ---------------- ----------------
nvme0n1 20 1.05 MB / 1.05 MB 512 B + 0 B nvme0
^^^^^^^^
This absolutely should be same with the `nvme list` result as decimal.
This patch fixed list --verbose nsid to decimal format.
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Klaus Jensen [Mon, 16 Nov 2020 08:52:19 +0000 (09:52 +0100)]
fix dsm and copy range setup
The argconfig array helpers parse into int and unsigned long long
arrays. In the copy function we are casting an int* to __u16* and we end
up with wrong values. Instead, just use the types in the setup functions
directly and convert the individual values as part of calling the
cpu_to_le* helpers.
While copy is the one that is immediately broken on most systems, do
this for DSM as well since it breaks on systems where int is not 32
bits.
Fixes: 5dc44e6c21a1 ("add support for issuing simple copy commands") Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Eyal Ben-David [Sun, 29 Nov 2020 10:48:27 +0000 (12:48 +0200)]
verify-no-dep : Fix makefile entry.
"verify-no-dep" makefile rule verifies that the main "nvme" program has no dependency
on code from the plugin modules. It can be used by developers as a regression check
in the development process.
Minwoo Im [Thu, 7 Jan 2021 07:03:13 +0000 (16:03 +0900)]
nvme: refactor S_ISCHR/S_ISBLK with helpers
This patch refactors S_ISCHR/S_ISBLK macros to helper functions for
readability. The global variable nvme_stat does no longer need to be in
subcommand handlers.
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Minwoo Im [Thu, 7 Jan 2021 07:28:44 +0000 (16:28 +0900)]
nvme: set block size to blkdev before re-read partition
Before re-reading partition information from a block device, to make
block size of the block device, application should do either:
- Close current file descriptor and re-open it again.
- Request block device to set block size by itself.
Kernel community has discussions about it, and can be found at [1].
The first option might not be good for readability in this program which
is one-shot command-based application. All the subcommands are
constructed "fd open -> issue command -> fd close". I don't want to
break the common style for this requirement.
This patch takes the second one and it just ioctl() to the block device
to update it's block size to a given value.
Gollu Appalanaidu [Mon, 11 Jan 2021 18:38:14 +0000 (00:08 +0530)]
nvme: add support for predictable latency event aggregate log page
This is to add support for LID = 0x0B, Predictable Latency Event
Aggregate Log Page, this is used if a Predictable Latency Event has
occurred for a particular NVM Set. For More details see NVM Express
1.4 Spec. Section 5.14.1.11 ("Predictable Latency Event Aggregate Log
Page (Log Identifier 0Bh)")
Max entries supported by this log page are 2044 which is:
(min xfer size (4096B) - size of num of entries(8B))/entry size (2B)
= 2044 entries
Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com> Co-Authored-By: Karthik Balan <karthik.b82@samsung.com> Reviewed-by: Steven Seungcheol Lee <sc108.lee@samsung.com>
Keith Busch [Tue, 12 Jan 2021 22:00:43 +0000 (14:00 -0800)]
fix 'list' verbose for controller namespaces
Checking that namespace against the subsystem's namespace list is not
always correct because the namespace may not be multipath capable. For
those namespaces, the kernel doesn't link the namespace to the
subsystem, so it ends up not getting displayed. Print all the
controller's namespaces, as the topology should have filtered ones out
that the controller is not a path to.
Minwoo Im [Tue, 12 Jan 2021 14:37:06 +0000 (23:37 +0900)]
zns: fix showing system error in report_zones
If nvme_zns_report_zones() returns system error(negative) value, it
should not be passed to nvme_show_status() which parses NVMe completion
status code in case of positive value from the ioctl.
Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Jeff Lien [Fri, 8 Jan 2021 14:41:00 +0000 (08:41 -0600)]
[NVME-CLI] WDC Plugin Fixes for SN-730
vs-nand-stats not printing json format
vs-nand-stats not printing raw format for several fields
vs-temperature-stats not printing json format
vs-drive-info not printing json format
Gollu Appalanaidu [Mon, 11 Jan 2021 08:17:45 +0000 (13:47 +0530)]
nvme: add support for persistent event log page
This is to add support for LID = 0x0D, Persistent Event log page,
this log page contains information about significant events not
specific to a particular command. The information in this log page
shall be retained across power cycles and resets. For More details
see NVM Express 1.4 Spec. Section 5.14.1.13 Persistent Event Log
(Log Identifier 0Dh)
Change nvme get log to read the whole log page interms of 4096 bytes.
Adding LSP argument in nvme get log fuction and change this across
the nvme get log function wherever has been used with NVME_NO_LOG_LSP.
This Adds support for the persistent event types:
01h SMART / Health Log Snapshot
02h Firmware Commit
03h Timestamp Change
04h Power-on or Reset
05h NVM Subsystem Hardware Error
06h Change Namespace
07h Format NVM Start
08h Format NVM Completion
09h Sanitize Start
0Ah Sanitize Completion
0Dh Thermal Excursion
Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com> Co-Authored-By: Karthik Balan <karthik.b82@samsung.com> Co-Authored-By: Steven Seungcheol Lee <sc108.lee@samsung.com>
Keith Busch [Tue, 20 Oct 2020 23:48:28 +0000 (16:48 -0700)]
tag new release
Tagging new release. The most significant changes are the new Zoned
Namespace support from the recently ratified NVMe TP, but also includes
vendor specific updates, various improvements, and spec feature
enhancements. Thank you to all the contributors for this round. Shortlog
follows:
Adam Judge (1):
Prevent compiler from optimizing mmio_read64 to single 64b read
Aleksei Marov (1):
Allow 0 value of ctrl_loss_tmo.
Aravind Ramesh (2):
nvme zns: segmentation fault in cmd "nvme zns zone-mgmt-send"
nvme zns: close device fd in id_ctrl() func
Brandon (1):
Added DITT explanation and cleaned up spacing
Brandon Paupore (17):
Added temperature information getting and text formatting
Implemented additional statistics to display
Corrected the output of TMT1 and 2
Added device support check for temp stats command
Added documentation for temperature stats function
Added missing semicolon
Added support for device 0x5006 to clear-pcie-correctable-error
Fixed some spacing
Reformatted text output to match other plugins
Added global namespace and device id display
Initial coding for new command 'capabilities', also create PCIE_CLEAR_MASK
Spacing fix
Finished implementing capabilities checks
Added documentation for capabilities command
Update capabilities command for some alternate command versions
Corrected vs-internal-log support status for some devices
Update supported devices in man page
Casey Tucker (1):
id-ctrl vs for Amazon Elastic Block Store
Darrin Smart (1):
Add missing dependencies on systemd & systemd-udev
Enzo Matsumiya (1):
doc: add 'tcp' as transport type option
Hans Holmberg (1):
Add warning if not all zone changed list entries are retrieved.
Hanumanthu H (2):
Micron plugin and documentation updates
Micron plugin and documentation updates
Jeff Lien (16):
DRV-1050 Update SN730 to support DUI data header version 4 Added version 4 structs and version checking logic
[NVME CLI] WDC Plugin Command Updates Add support for using uuid index when retrieving the 0xC2 Log Page Add support for parsing the 0xC0 log page
[NVMe-CLI] WDC Plugin update documentation for vs-smart-add-log command
Add support for ZN345 drive.
Fix spacing issue.
[NVMe-CLI] Add support for clear-pcie-correctable-error in wdc plugins for SN345
[NVMe-CLI] Add support for vs-fw-activate-history and clear-fw-activate-history in wdc plugins for SN345
[nvme-cli] Add log page mask parameter to vs-smart-add-log wdc plugin command.
[nvme-cli] Updated documentation files for vs-smart-add-log wdc plugin command
[nvme-cli] WDC plugin name change ZN345 to ZN355 Add drive info capability to ZN355
[nvme-cli] Fix vs-fw-activate-history for 0xC2 log page
[nvme-cli] fix spacing issues in wdc vs-fw-activate-history
[nvme-cli] Add support for enclosures to WDC plugin commands
[nvme-cli] Documentation files for new wdc plugin enclosure command
[nvme-cli] Fix comments and spacing with enclosure changes
[nvme-cli] Update enclosure changes based on review comments.
Jian Ding (1):
Add support for DUI data header version 4.
Keith Busch (19):
support for zoned command set
add zns documentation
fix zns csn identify values
fix print for zns id ns
zns id-ns json output
report all zones if no user override
add missing manpage to repo
fix manpage name
Merge branch 'MatiasBjorling-prettifyzns'
fix 32-bit build
fix compile errors from recent pr
start continuous integration
iocs fixes
Merge branch 'master' of https://github.com/linux-nvme/nvme-cli
use normal alloc for fw download
fix 64-bit print formats
fix cross compile print formats
regen documentation
tag new release
Klaus Jensen (12):
ioctl: fix missing addrof
add fields and types for zoned namespaces
Add zoned namespaces identify human readable print
Add exception for zone management send command
add fields and types for zoned namespaces
Add zoned namespaces identify human readable print
Add exception for zone management send command
nvme-print: streamline show-regs output
nvme-print: zns mar/mor fields are 32 bits
add support for issuing simple copy commands
{get,set}_feature: get nsid from device node
fix '< 0' comparisons of unsigned expressions
Matias Bjorling (1):
Improve output readability of the zns id-ns command
Matias Bjørling (8):
Add really pretty print for ZNS Command Set specific Identify Namespace data structure
Various cleanups in the ZNS plugin
Capitalize LBA in descriptions within the ZNS plugin
Remove lx text from reporting
Align print of zns id_ns with nvm id_ns
Add support for printing vs area in zns id ns
Align print of zns id_ctrl with nvm id_ctrl
Improve pretty print of the ZNS Command Set Identify Namespace command
Max Gurtovoy (1):
nvme: add support for non shared namespaces
Narasimhan V (2):
Getting interrupt list only for current controller
Print human readable output for get_features test
Niklas Cassel (4):
nvme-print: ZNS zoc field is 16 bits
nvme-print: ZNS ozcs field is 16 bits
nvme-print: fix ZNS Read Across Zone Boundaries print
nvme-print: fix ZNS MAR/MOR print
Randy Bates (3):
Update and Parse FB log page
Updates from pull request review
Initial coding
Revanth Rajashekar (1):
nvme-cli: Update Intel VU Smart Log Add
Sagi Grimberg (6):
nvme: add fabrics discovery controller default port number
fabrics: move connect_args extraction to a dedicated routine
fabrics: fix infinite loop is discovery recursion contains a loop
fabrics: fix segfault when -t <transport> is not passed
fabrics: fix passing ctrl_loss_tmo=0 by default
nvme-status: Don't reduce all negative statuses to ECOMM
Stephen Kitt (1):
Add Debian installation instructions
Steven Seungcheol Lee (16):
Identify I/O Command Set data structure command added
Added new namespace list command on list-ns, 4056 modification added
zone-mgmt-recv report size bug fix
Modify changed zone list command to issue get-log
Add latency check for zone-append
zone-mgmt-recv report size bug fix
Modify changed zone list command to issue get-log
Add latency check for zone-append
zns: nsid is used for zone-mgmt-send exception handling
zns: getting zdes logic using exist function, data_len should be in bytes
Add zone-mgmt-recv parameters to issue command
format: rescan after format for character device linux-nvme #709
Add rpm build output on gitignore
Handling system error #768
nvme.c: read, write data size should be block_count * logical block size
rpmbuild: install directories using Makefile's variables
Wei Hou (4):
sfx: add set/get-feature sub cmd
do capacity change check
correct some prompt
correct some prompt
Improve output readability of the zns id-ns command
- Expose MAR/MOR in a human readable format.
- Update spaces between values to align appropriately.
- Expose the MAR/MOR/FRL/RRL fields as unsigned decimal instead of hex.
Steven Seungcheol Lee [Thu, 24 Sep 2020 02:48:43 +0000 (11:48 +0900)]
nvme.c: read, write data size should be block_count * logical block size
Physical block size could be different with logical block size from kernel
because of npwg(Namespace Preferred Write Granularity) & nows(Namespace Optimal Write Size)
physical block size would be multiple of logical block size.
Signed-off-by: Steven Seungcheol Lee <sc108.lee@samsung.com> Reviewed-by: Beomsoo Kim <beomsooo.kim@samsung.com>
According to the ZNS specification, MAR/MOR is 0's based, and no limit for
these fields are represented as 0xffffffff, not as 0.
Since all ones is the same in little endian and big endian, no need to
do any conversion before doing the comparison.
nvme-status: Don't reduce all negative statuses to ECOMM
There should be no reason why we should reduce all the semantic status
codes we are getting from the device/driver to a single meaningless
status code.