svn commit: r280230 - in head: sys/cam/scsi usr.bin/mt

Kenneth D. Merry ken at FreeBSD.org
Wed Mar 18 20:52:36 UTC 2015


Author: ken
Date: Wed Mar 18 20:52:34 2015
New Revision: 280230
URL: https://svnweb.freebsd.org/changeset/base/280230

Log:
  Fix a couple of problems in the sa(4) media type reports.
  
  The only drives I have discovered so far that support medium type
  reports are newer HP LTO (LTO-5 and LTO-6) drives.  IBM drives
  only support the density reports.
  
  sys/cam/scsi/scsi_sa.h:
  	The number of possible density codes in the medium type
  	report is 9, not 8.  This caused problems parsing all of
  	the medium type report after this point in the structure.
  
  usr.bin/mt/mt.c:
  	Run the density codes returned in the medium type report
  	through denstostring(), just like the primary and secondary
  	density codes in the density report.  This will print the
  	density code in hex, and give a text description if it
  	is available.
  
  Thanks to Rudolf Cejka for doing extensive testing with HP LTO drives
  and Bacula and discovering these problems.
  
  Tested by:	Rudolf Cejka <cejkar at fit.vutbr.cz>
  Sponsored by:	Spectra Logic
  MFC after:	4 days

Modified:
  head/sys/cam/scsi/scsi_sa.h
  head/usr.bin/mt/mt.c

Modified: head/sys/cam/scsi/scsi_sa.h
==============================================================================
--- head/sys/cam/scsi/scsi_sa.h	Wed Mar 18 20:40:42 2015	(r280229)
+++ head/sys/cam/scsi/scsi_sa.h	Wed Mar 18 20:52:34 2015	(r280230)
@@ -477,7 +477,7 @@ struct scsi_medium_type_data {
 	u_int8_t length[2];
 #define	SMTD_DEFAULT_LENGTH	52
 	u_int8_t num_density_codes;
-	u_int8_t primary_density_codes[8];
+	u_int8_t primary_density_codes[9];
 	u_int8_t media_width[2];
 	u_int8_t medium_length[2];
 	u_int8_t reserved2[2];

Modified: head/usr.bin/mt/mt.c
==============================================================================
--- head/usr.bin/mt/mt.c	Wed Mar 18 20:40:42 2015	(r280229)
+++ head/usr.bin/mt/mt.c	Wed Mar 18 20:52:34 2015	(r280230)
@@ -1406,9 +1406,9 @@ mt_print_density_entry(struct mt_status_
 				continue;
 		}
 		if ((strcmp(entry->entry_name, "primary_density_code") == 0)
-		 || (strcmp(entry->entry_name, "secondary_density_code") == 0)){
+		 || (strcmp(entry->entry_name, "secondary_density_code") == 0)
+		 || (strcmp(entry->entry_name, "density_code") == 0)) {
 
-			/* XXX KDM this should really be unsigned */
 			printf("%*s%s (%s): %s\n", indent, "", entry->desc ?
 			    entry->desc : "", entry->entry_name,
 			    denstostring(entry->value_unsigned));


More information about the svn-src-head mailing list