From owner-svn-src-stable@FreeBSD.ORG Thu Jul 4 00:06:12 2013 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id B296039D; Thu, 4 Jul 2013 00:06:12 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id A293C1FDA; Thu, 4 Jul 2013 00:06:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6406CZv073097; Thu, 4 Jul 2013 00:06:12 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r6406Bva073090; Thu, 4 Jul 2013 00:06:11 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201307040006.r6406Bva073090@svn.freebsd.org> From: Jim Harris Date: Thu, 4 Jul 2013 00:06:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r252670 - stable/9/sbin/nvmecontrol X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jul 2013 00:06:12 -0000 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 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 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 \n" +#define LOGPAGE_USAGE \ +" nvmecontrol logpage <-p page_id> [-x] \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