Tue Sep 2 12:14:04 CDT 2008 Added fan, temperature and power supply status reporting (thanks to Christian Hofstaedtler) Tue Sep 19 14:55:25 CDT 2006 Autoconfiscated cciss_vol_status Tue Mar 6 14:44:14 EST 2007 Added support for more than 16 logical drives. Added -x option for exhaustive search Mon Nov 2 04:56:55 CST 2009 Added support for hpsa driver Added support for hpahcisr driver Added support for new controllers: Smart Array P700m Smart Array P212 Smart Array P410 Smart Array P410i Smart Array P411 Smart Array P812 Cache some serial numbers to cut down on redundant i/o when rummaging around trying to figure out what's what. Assume 16 possible storage boxes for SAS based controllers Wed Nov 18 10:18:22 MST 2009 * Fixed bug that if a logical drive had an active spare, and thus was "ok", the exit code was still zero, so it acted as though nothing were wrong, even though the failed drive needed replacing to get back to original good status with spares. * Fixed bug in spare status messages. One message was left out, and so some of the others were wrong, being off-by-one. * Bumped version up to 1.06 2010/05/20 07:12:06 * Change weird "uint" to normal "unsigned int" Thanks to Frank Bergmann for this patch. * Fix strnlen that should have been a strlen. Thanks to Frank Bergmann for noticing this. 2010/10/11 09:41:23 * get rid of typedefs 2010/10/13 07:02:37 * cosmetic whitespace fixes Date: 2010/10/13 07:40:06 * Do not treat hpsa and hpahcisr as if they were MSA1000, but instead treat as cciss devices. This means, use the CCISS_PASSTHRU ioctl, not SG_IO (the drivers for the MSA1000 are qlogic or emulex, and do not have the CCISS_PASSTHRU ioctl, and so must use SG_IO. The difference in power between the SG_IO and CCISS_PASSTHRU is mainly that the CCISS_PASSTHRU allows specifying the 8-byte LUNID, and thus can aim commands at any attached device, whereas SG_IO is aimed by means of which device node you open. However, there are devices (e.g. external controllers, MSA20, etc.) which do not have any exposed device nodes and so are unreachable by SG_IO. By treating hpsa and hpahcisr as cciss, we get access to those devices. * Factor out msa1000_status() * Cleaned up -Wall warnings. * Factor out device type sanity checking code into cciss_device_type_is_correct(), and get rid of the ugly goto for hpsa and hpahcisr cases. * Factor out cciss_logical_drive_status() * Rename the final parameter of cciss_logical_drive_status from 'i' to more sensible 'volume_number' * Make all functions static 2010/10/14 09:36:32 * Zero out controller_lun_list at the beginning init_cciss_to_bmic and num_controllers. init_cciss_to_bmic is called once per controller on the command line to find external controllers, and should be zeroed out each time. 2010/11/05 08:44:13 * Provided local cciss_ioctl.h and cciss_defs.h to aid distros which come with a broken variant of cciss_ioctl.h, and added instructions in INSTALL which explain how to use these fixed headers. * Added note about aclocal-1.10, and corrected note about how to deal with broken cciss_ioctl.h header files. * Clarified that configure failing to #define __user is not the only reason that cciss_ioctl.h might not compile. * Added linux_alternate_makefile.mk to allow sidestepping autoconf problems. 2010/11/19 14:54:44 * Now reports physical drive serial numbers, firmware revision, connector, box and bay information. * Factor out find_bus_target() function * Factor out format_phys_drive_location() * Report S.M.A.R.T. predictive failures Changes since 1.07: 2010/12/02 09:35:54 * Added examples to man page of S.M.A.R.T predictive failure reporting. * make it compile on freebsd * Fix a file descriptor leak Changes since 1.08: 2010/12/03 08:23:26 * Remove unused bogus variable declarations at the end of a function that didn't compile on older gcc versions. (Thanks to Simon Matter) * Print error information if sense bus parameters encounters a target status. * Remove bogus incorrect initialization of controller_lun_list (it's done later down in the code correctly.) * Make it compile with no warnings after "configure CFLAGS=-Wall" Changes since 1.09: * Clean up uninitialized variables detected by valgrind. * Added some new smart array controllers to the list of known controllers * Replace the too specific is_hpsa() and is_hpahcisr() functions with a more generic is_smart_array(). This was preventing -u option from working with the hpsa driver. * Remove inquiry_vendor_model_matches() function which is now no longer used. * Added -W and -Wall flags to gcc in linux_alternate_makefile.mk and fixed up all the warnings that those found. * Add -V (verbose) option which prints out extra information about the controller (board ID, running firmware revision, ROM firmware revision, and number of logical drives). * Make the --verbose option print out more information about the controllers and physical drives. For each controller, the board ID, number of logical drives, currently running firmware revision and ROM firmware revision are printed. For each physical drive, the location, vendor, model, serial number, and firmware revision are printed. * Added .gitignore and cvsignore files * regenerated configure, aclocal.m4, and Makefile.in on RHEL6u2. * Made -p shortcut for --persnickety actualy work. Changes since 1.10 * Added support for new controllers * Now can report status of nonvolatile cache * Misc. code cleanup and refactoring * Do not spin up sleeping spare drives. This is done by using "extended" CISS_REPORT_LUNS to obtain the device type instead of sending inquiries to every device returned by standard CISS_REPORT_LUNS to get the device type.