Author: jimharris
Date: Thu Jul  4 00:06:11 2013
New Revision: 252670
URL: http://svnweb.freebsd.org/changeset/base/252670

Log:
  MFC r252277:
  
    Add log page support to nvmecontrol(8) through a new logpage command.
  
    This includes pretty printers for all of the standard NVMe log pages
    (Error, SMART/Health, Firmware), as well as hex output for non-standard
    or vendor-specific log pages.
  
  Also add missing static keyword that glebius@ fixed as part of r252302.
  
  Submitted by: Joe Golio <joseph.go...@emc.com>
  Obtained from:        EMC / Isilon Storage Division

Added:
  stable/9/sbin/nvmecontrol/logpage.c
     - copied, changed from r252277, head/sbin/nvmecontrol/logpage.c
Modified:
  stable/9/sbin/nvmecontrol/Makefile
  stable/9/sbin/nvmecontrol/nvmecontrol.8
  stable/9/sbin/nvmecontrol/nvmecontrol.c
  stable/9/sbin/nvmecontrol/nvmecontrol.h
Directory Properties:
  stable/9/sbin/nvmecontrol/   (props changed)

Modified: stable/9/sbin/nvmecontrol/Makefile
==============================================================================
--- stable/9/sbin/nvmecontrol/Makefile  Thu Jul  4 00:03:30 2013        
(r252669)
+++ stable/9/sbin/nvmecontrol/Makefile  Thu Jul  4 00:06:11 2013        
(r252670)
@@ -1,7 +1,7 @@
 # $FreeBSD$
 
 PROG=  nvmecontrol
-SRCS=  nvmecontrol.c devlist.c identify.c perftest.c reset.c
+SRCS=  nvmecontrol.c devlist.c identify.c logpage.c perftest.c reset.c
 MAN=   nvmecontrol.8
 
 .include <bsd.prog.mk>

Copied and modified: stable/9/sbin/nvmecontrol/logpage.c (from r252277, 
head/sbin/nvmecontrol/logpage.c)
==============================================================================
--- head/sbin/nvmecontrol/logpage.c     Wed Jun 26 23:53:54 2013        
(r252277, copy source)
+++ stable/9/sbin/nvmecontrol/logpage.c Thu Jul  4 00:06:11 2013        
(r252670)
@@ -227,7 +227,7 @@ print_log_firmware(void *buf, uint32_t s
        }
 }
 
-struct logpage_function {
+static struct logpage_function {
        uint8_t         log_page;
        print_fn_t      fn;
 } logfuncs[] = {

Modified: stable/9/sbin/nvmecontrol/nvmecontrol.8
==============================================================================
--- stable/9/sbin/nvmecontrol/nvmecontrol.8     Thu Jul  4 00:03:30 2013        
(r252669)
+++ stable/9/sbin/nvmecontrol/nvmecontrol.8     Thu Jul  4 00:06:11 2013        
(r252670)
@@ -58,6 +58,12 @@
 .Nm
 .Ic reset
 .Aq controller id
+.Nm
+.Ic logpage
+.Aq Fl p Ar page_id
+.Op Fl x
+.Aq device id
+.Aq namespace id
 .Sh DESCRIPTION
 NVM Express (NVMe) is a storage protocol standard, for SSDs and other
 high-speed storage devices over PCI Express.
@@ -84,6 +90,16 @@ stdout when 30 seconds expires.
 .Dl nvmecontrol reset nvme0
 .Pp
 Perform a controller-level reset of the nvme0 controller.
+.Pp
+.Dl nvmecontrol logpage -p 1 nvme0
+.Pp
+Display a human-readable summary of the nvme0 controller's Error Information 
Log.
+Log pages defined by the NVMe specification include Error Information Log 
(ID=1),
+SMART/Health Information Log (ID=2), and Firmware Slot Log (ID=3).
+.Pp
+.Dl nvmecontrol logpage -p 1 -x nvme0
+.Pp
+Display a hexidecimal dump of the nvme0 controller's Error Information Log.
 .Sh AUTHORS
 .An -nosplit
 .Nm

Modified: stable/9/sbin/nvmecontrol/nvmecontrol.c
==============================================================================
--- stable/9/sbin/nvmecontrol/nvmecontrol.c     Thu Jul  4 00:03:30 2013        
(r252669)
+++ stable/9/sbin/nvmecontrol/nvmecontrol.c     Thu Jul  4 00:06:11 2013        
(r252670)
@@ -55,6 +55,7 @@ static struct nvme_function {
        {"identify",    identify,       IDENTIFY_USAGE},
        {"perftest",    perftest,       PERFTEST_USAGE},
        {"reset",       reset,          RESET_USAGE},
+       {"logpage",     logpage,        LOGPAGE_USAGE},
        {NULL,          NULL,           NULL},
 };
 

Modified: stable/9/sbin/nvmecontrol/nvmecontrol.h
==============================================================================
--- stable/9/sbin/nvmecontrol/nvmecontrol.h     Thu Jul  4 00:03:30 2013        
(r252669)
+++ stable/9/sbin/nvmecontrol/nvmecontrol.h     Thu Jul  4 00:06:11 2013        
(r252670)
@@ -49,15 +49,21 @@
 #define RESET_USAGE                                                           \
 "       nvmecontrol reset <controller id>\n"
 
+#define LOGPAGE_USAGE                                                         \
+"       nvmecontrol logpage <-p page_id> [-x] <controller id|namespace id>\n"  
\
+
 void devlist(int argc, char *argv[]);
 void identify(int argc, char *argv[]);
 void perftest(int argc, char *argv[]);
 void reset(int argc, char *argv[]);
+void logpage(int argc, char *argv[]);
 
 int open_dev(const char *str, int *fd, int show_error, int exit_on_error);
 void read_controller_data(int fd, struct nvme_controller_data *cdata);
 void read_namespace_data(int fd, int nsid, struct nvme_namespace_data *nsdata);
 void print_hex(void *data, uint32_t length);
+void read_logpage(int fd, uint8_t log_page, int nsid, void *payload,
+    uint32_t payload_size);
 
 #endif
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to