Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NVME-ID-NS(1)			   NVMe Manual			   NVME-ID-NS(1)

NAME
     nvme-id-ns - Send NVMe Identify Namespace, return result and structure

SYNOPSIS
     nvme id-ns <device> [--vendor-specific | -v] [--raw-binary | -b]
			     [--namespace-id=<nsid> | -n <nsid>] [--force]
			     [--human-readable | -H]
			     [--output-format=<fmt> | -o <fmt>] [--verbose | -v]

DESCRIPTION
     For the NVMe device given, sends an identify namespace command and provides
     the result and returned structure.

     The  <device>  parameter  is mandatory and may be either the NVMe character
     device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1). If
     the character device is given, the '--namespace-id'  option  is  mandatory,
     otherwise	it  will use the ns-id of the namespace for the block device you
     opened. For block devices, the ns-id used can be overridden with  the  same
     option.

     On  success, the structure may be returned in one of several ways depending
     on the option flags; the structure may be parsed by the program or the  raw
     buffer may be printed to stdout.

OPTIONS
     -n <nsid>, --namespace-id=<nsid>
	 Retrieve  the	identify namespace structure for the given nsid. This is
	 required for the character devices, or  overrides  the  block	nsid  if
	 given.  If  the controller supports namespace management capability and
	 0xFFFFFFFF is given, then the controller returns the identify namespace
	 structure that specifies common capabilities across namespaces for  the
	 controller.

     --force
	 Request  controller return the identify namespace structure even if the
	 namespace is not attached to the controller. This  is	valid  only  for
	 controllers  at  or  newer  than  revision 1.2. Controllers at revision
	 lower than this may interpret the command incorrectly.

     -b, --raw-binary
	 Print the raw buffer to stdout. Structure is  not  parsed  by	program.
	 This overrides the vendor specific and human readable options.

     -V, --vendor-specific
	 In  addition  to parsing known fields, this option will dump the vendor
	 specific region of the structure in hex with ascii interpretation.

     -H, --human-readable
	 This option will parse and format many  of  the  bit  fields  into  hu-
	 man-readable formats.

     -o <fmt>, --output-format=<fmt>
	 Set  the  reporting  format  to normal, json or binary. Only one output
	 format can be used at a time.

     -v, --verbose
	 Increase the information detail in the output.

EXAMPLES
     *	 Has the program interpret the returned buffer	and  display  the  known
	 fields in a human readable format:

	     # nvme id-ns /dev/nvme0n1

     *	 If using the character device or overriding namespace id:

	     # nvme id-ns /dev/nvme0 -n 1
	     # nvme id-ns /dev/nvme0n1 -n 1
	     # nvme id-ns /dev/nvme0 --namespace-id=1

     *	 In  addition  to  showing the known fields, have the program to display
	 the vendor unique field:

	     # nvme id-ns /dev/nvme0n1 --vendor-specific
	     # nvme id-ns /dev/nvme0n1 -V

	 The above will dump the 'vs' buffer in hex since it doesn't know how to
	 interpret it.

     *	 Have the program return the raw structure in binary:

	     # nvme id-ns /dev/nvme0n1 --raw-binary > id_ns.raw
	     # nvme id-ns /dev/nvme0n1 -b > id_ns.raw

	 It is probably a bad idea to not redirect stdout when using this mode.

     *	 Alternatively you may want to send the data to another program that can
	 parse the raw buffer.

	     # nvme id-ns /dev/nvme0n1 --raw-binary | nvme_parse_id_ns

	 The parse program in the above example can be a program that shows  the
	 structure  in	a way you like. The following program is such an example
	 that will parse it and can accept the output through a  pipe,	'|',  as
	 shown	in  the above example, or you can 'cat' a saved output buffer to
	 it.

	 /* File: nvme_parse_id_ns.c */

	 #include <linux/nvme.h>
	 #include <stdio.h>
	 #include <unistd.h>

	 int main(int argc, char **argv)
	 {
		 unsigned char buf[sizeof(struct nvme_id_ns)];
		 struct nvme_id_ns *ns = (struct nvme_id_ns *)buf;

		 if (read(STDIN_FILENO, buf, sizeof(buf)))
			 return 1;

		 printf("nsze : %#llx\n", ns->nsze);
		 printf("ncap : %#llx\n", ns->ncap);
		 return 0;
	 }

NVME
     Part of the nvme-user suite

NVMe				   10/31/2024			   NVME-ID-NS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nvme-id-ns&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help