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
_______________________________________________
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