Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Aug 2013 12:05:39 +0000 (UTC)
From:      Sean Bruno <sbruno@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r254906 - head/usr.sbin/mfiutil
Message-ID:  <201308261205.r7QC5duX030572@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sbruno
Date: Mon Aug 26 12:05:38 2013
New Revision: 254906
URL: http://svnweb.freebsd.org/changeset/base/254906

Log:
  Add support to reconfigure a drive as SYSPD (real JBOD in LSI
  terminology).
  
  Adds command "mfiutil syspd <drive#>" to change a drive to SYSPD.  Drive
  will then be scanned/reported immediately as /dev/mfisyspdX by the host.
  
  "mfiutil good <drive#>" clears SYSPD mode, remove /dev/mfisyspdX and
  sets disk into UNCONFIGURED mode.
  
  Tested on Dell H310 SAS/SATA RAID controller.
  
  MFC after:	2 weeks
  Sponsored by:	Yahoo! Inc.

Modified:
  head/usr.sbin/mfiutil/mfi_drive.c
  head/usr.sbin/mfiutil/mfiutil.8
  head/usr.sbin/mfiutil/mfiutil.c

Modified: head/usr.sbin/mfiutil/mfi_drive.c
==============================================================================
--- head/usr.sbin/mfiutil/mfi_drive.c	Mon Aug 26 12:04:22 2013	(r254905)
+++ head/usr.sbin/mfiutil/mfi_drive.c	Mon Aug 26 12:05:38 2013	(r254906)
@@ -474,6 +474,20 @@ rebuild_drive(int ac, char **av)
 MFI_COMMAND(top, rebuild, rebuild_drive);
 
 static int
+syspd_drive(int ac, char **av)
+{
+
+	if (ac != 2) {
+		warnx("syspd: %s", ac > 2 ? "extra arguments" :
+		    "drive required");
+		return (EINVAL);
+	}
+
+	return (drive_set_state(av[1], MFI_PD_STATE_SYSTEM));
+}
+MFI_COMMAND(top, syspd, syspd_drive);
+
+static int
 start_rebuild(int ac, char **av)
 {
 	struct mfi_pd_info info;

Modified: head/usr.sbin/mfiutil/mfiutil.8
==============================================================================
--- head/usr.sbin/mfiutil/mfiutil.8	Mon Aug 26 12:04:22 2013	(r254905)
+++ head/usr.sbin/mfiutil/mfiutil.8	Mon Aug 26 12:05:38 2013	(r254906)
@@ -91,6 +91,9 @@
 .Cm rebuild Ar drive
 .Nm
 .Op Fl u Ar unit
+.Cm syspd Ar drive
+.Nm
+.Op Fl u Ar unit
 .Cm drive progress Ar drive
 .Nm
 .Op Fl u Ar unit
@@ -372,6 +375,11 @@ Mark a failed
 that is still part of an array as a good drive suitable for a rebuild.
 The firmware should kick off an array rebuild on its own if a failed drive
 is marked as a rebuild drive.
+.It Cm syspd Ar drive
+Present the drive to the host operating system as a disk SYSPD block device in
+the format /dev/mfisyspdX.  Clear this flag with
+.Cm good
+.Ar drive
 .It Cm drive progress Ar drive
 Report the current progress and estimated completion time of drive operations
 such as rebuilds or patrol reads.
@@ -679,6 +687,10 @@ Add the drive in slot 2 in the main chas
 .Pp
 .Dl Nm Cm add s2 mfid0
 .Pp
+Reconfigure a disk as a SYSPD block device with no RAID
+.Pp
+.Dl Nm Cm syspd 0
+.Pp
 Configure the adapter to run periodic patrol reads once a week with the first
 patrol read starting in 5 minutes:
 .Pp

Modified: head/usr.sbin/mfiutil/mfiutil.c
==============================================================================
--- head/usr.sbin/mfiutil/mfiutil.c	Mon Aug 26 12:04:22 2013	(r254905)
+++ head/usr.sbin/mfiutil/mfiutil.c	Mon Aug 26 12:05:38 2013	(r254906)
@@ -66,8 +66,9 @@ usage(void)
 	fprintf(stderr, "    show patrol               - display patrol read status\n");
 	fprintf(stderr, "    show progress             - display status of active operations\n");
 	fprintf(stderr, "    fail <drive>              - fail a physical drive\n");
-	fprintf(stderr, "    good <drive>              - mark a bad physical drive as good\n");
+	fprintf(stderr, "    good <drive>              - set a failed/SYSPD drive as UNCONFIGURED\n");
 	fprintf(stderr, "    rebuild <drive>           - mark failed drive ready for rebuild\n");
+	fprintf(stderr, "    syspd <drive>             - set drive into use as SYSPD JBOD\n");
 	fprintf(stderr, "    drive progress <drive>    - display status of active operations\n");
 	fprintf(stderr, "    drive clear <drive> <start|stop> - clear a drive with all 0x00\n");
 	fprintf(stderr, "    start rebuild <drive>\n");
@@ -103,7 +104,7 @@ static int
 version(int ac __unused, char **av __unused)
 {
 
-	printf("mfiutil version 1.0.14");
+	printf("mfiutil version 1.0.15");
 #ifdef DEBUG
 	printf(" (DEBUG)");
 #endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308261205.r7QC5duX030572>