diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG index 20e5e12e141c18e4a1099b57c85a020016e5bfe7..158eca100fb14b86fc0553f3a4607e92ff8de697 100644 --- a/sm5/CHANGELOG +++ b/sm5/CHANGELOG @@ -1,6 +1,6 @@ CHANGELOG for smartmontools -$Id: CHANGELOG,v 1.760 2009/01/11 13:24:53 manfred99 Exp $ +$Id: CHANGELOG,v 1.761 2009/01/14 02:39:00 sxzzsf Exp $ The most recent version of this file is: http://smartmontools.cvs.sourceforge.net/smartmontools/sm5/CHANGELOG?view=markup @@ -34,13 +34,16 @@ Maintainers / Developers Key (alphabetic order): [SS] Sergey Svishchev [PW] Phil Williams [LW] Leon Woestenberg -[SZ] Sf Zhou +[SZ] Shengfeng Zhou [RZ] Richard Zybert NOTES FOR FUTURE RELEASES: see TODO file. <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE> + [SZ] os_freebsd.cpp, os_freebsd.h updates: + Support HighPoint RocketRAID controller under FreeBSD + [MS] knowndrives.cpp updates: - Added Western Digital RE3 32MB cache variants - Added WD Caviar Green 32MB cache variant (WD10EADS) diff --git a/sm5/os_freebsd.cpp b/sm5/os_freebsd.cpp index cf4118f7d63cd99b7d37476fdf7d92d8f5859f96..064610385aa7f4f53862e805d38a21699d2ef6bc 100644 --- a/sm5/os_freebsd.cpp +++ b/sm5/os_freebsd.cpp @@ -46,9 +46,9 @@ #include "extern.h" #include "os_freebsd.h" -static __unused const char *filenameandversion="$Id: os_freebsd.cpp,v 1.72 2008/12/19 15:49:38 dlukes Exp $"; +static __unused const char *filenameandversion="$Id: os_freebsd.cpp,v 1.73 2009/01/14 02:39:00 sxzzsf Exp $"; -const char *os_XXXX_c_cvsid="$Id: os_freebsd.cpp,v 1.72 2008/12/19 15:49:38 dlukes Exp $" \ +const char *os_XXXX_c_cvsid="$Id: os_freebsd.cpp,v 1.73 2009/01/14 02:39:00 sxzzsf Exp $" \ ATACMDS_H_CVSID CCISS_H_CVSID CONFIG_H_CVSID INT64_H_CVSID OS_FREEBSD_H_CVSID SCSICMDS_H_CVSID UTILITY_H_CVSID; extern smartmonctrl * con; @@ -164,6 +164,15 @@ int deviceopen (const char* dev, __unused char* mode) { } } + if (parse_ok == CONTROLLER_HPT) { + if ((fdchan->device = open(dev,O_RDWR))<0) { + int myerror = errno; // preserve across free call + free(fdchan); + errno = myerror; + return -1; + } + } + if (parse_ok == CONTROLLER_CCISS) { if ((fdchan->device = open(dev,O_RDWR))<0) { int myerror = errno; // preserve across free call @@ -266,8 +275,158 @@ int marvell_command_interface(__unused int fd, __unused smart_command_set comman return -1; } -int highpoint_command_interface(__unused int fd, __unused smart_command_set command, __unused int select, __unused char *data) { - return -1; +int highpoint_command_interface(int fd, smart_command_set command, int select, char *data) { + int ids[2]; + struct freebsd_dev_channel* fbcon; + HPT_IOCTL_PARAM param; + HPT_CHANNEL_INFO_V2 info; + unsigned char* buff[512 + 2 * sizeof(HPT_PASS_THROUGH_HEADER)]; + PHPT_PASS_THROUGH_HEADER pide_pt_hdr, pide_pt_hdr_out; + + // check that "file descriptor" is valid + if (isnotopen(&fd, &fbcon)) + return -1; + + // get internal deviceid + ids[0] = con->hpt_data[0] - 1; + ids[1] = con->hpt_data[1] - 1; + + memset(¶m, 0, sizeof(HPT_IOCTL_PARAM)); + + param.magic = HPT_IOCTL_MAGIC; + param.ctrl_code = HPT_IOCTL_GET_CHANNEL_INFO_V2; + param.in = (unsigned char *)ids; + param.in_size = sizeof(unsigned int) * 2; + param.out = (unsigned char *)&info; + param.out_size = sizeof(HPT_CHANNEL_INFO_V2); + + if (con->hpt_data[2]==1) { + param.ctrl_code = HPT_IOCTL_GET_CHANNEL_INFO; + param.out_size = sizeof(HPT_CHANNEL_INFO); + } + if (ioctl(fbcon->device, HPT_DO_IOCONTROL, ¶m)!=0 || + info.devices[con->hpt_data[2]-1]==0) { + return -1; + } + + // perform smart action + memset(buff, 0, 512 + 2 * sizeof(HPT_PASS_THROUGH_HEADER)); + pide_pt_hdr = (PHPT_PASS_THROUGH_HEADER)buff; + + pide_pt_hdr->lbamid = 0x4f; + pide_pt_hdr->lbahigh = 0xc2; + pide_pt_hdr->command = ATA_SMART_CMD; + pide_pt_hdr->id = info.devices[con->hpt_data[2] - 1]; + + switch (command){ + case READ_VALUES: + pide_pt_hdr->feature=ATA_SMART_READ_VALUES; + pide_pt_hdr->protocol=HPT_READ; + break; + case READ_THRESHOLDS: + pide_pt_hdr->feature=ATA_SMART_READ_THRESHOLDS; + pide_pt_hdr->protocol=HPT_READ; + break; + case READ_LOG: + pide_pt_hdr->feature=ATA_SMART_READ_LOG_SECTOR; + pide_pt_hdr->lbalow=select; + pide_pt_hdr->protocol=HPT_READ; + break; + case IDENTIFY: + pide_pt_hdr->command=ATA_IDENTIFY_DEVICE; + pide_pt_hdr->protocol=HPT_READ; + break; + case ENABLE: + pide_pt_hdr->feature=ATA_SMART_ENABLE; + break; + case DISABLE: + pide_pt_hdr->feature=ATA_SMART_DISABLE; + break; + case AUTO_OFFLINE: + pide_pt_hdr->feature=ATA_SMART_AUTO_OFFLINE; + pide_pt_hdr->sectorcount=select; + break; + case AUTOSAVE: + pide_pt_hdr->feature=ATA_SMART_AUTOSAVE; + pide_pt_hdr->sectorcount=select; + break; + case IMMEDIATE_OFFLINE: + pide_pt_hdr->feature=ATA_SMART_IMMEDIATE_OFFLINE; + pide_pt_hdr->lbalow=select; + break; + case STATUS_CHECK: + case STATUS: + pide_pt_hdr->feature=ATA_SMART_STATUS; + break; + case CHECK_POWER_MODE: + pide_pt_hdr->command=ATA_CHECK_POWER_MODE; + break; + case WRITE_LOG: + memcpy(buff+sizeof(HPT_PASS_THROUGH_HEADER), data, 512); + pide_pt_hdr->feature=ATA_SMART_WRITE_LOG_SECTOR; + pide_pt_hdr->lbalow=select; + pide_pt_hdr->protocol=HPT_WRITE; + break; + default: + pout("Unrecognized command %d in highpoint_command_interface()\n" + "Please contact " PACKAGE_BUGREPORT "\n", command); + errno=ENOSYS; + return -1; + } + if (pide_pt_hdr->protocol!=0) { + pide_pt_hdr->sectors = 1; + pide_pt_hdr->sectorcount = 1; + } + + memset(¶m, 0, sizeof(HPT_IOCTL_PARAM)); + + param.magic = HPT_IOCTL_MAGIC; + param.ctrl_code = HPT_IOCTL_IDE_PASS_THROUGH; + param.in = (unsigned char *)buff; + param.in_size = sizeof(HPT_PASS_THROUGH_HEADER) + (pide_pt_hdr->protocol==HPT_READ ? 0 : pide_pt_hdr->sectors * 512); + param.out = (unsigned char *)buff+param.in_size; + param.out_size = sizeof(HPT_PASS_THROUGH_HEADER) + (pide_pt_hdr->protocol==HPT_READ ? pide_pt_hdr->sectors * 512 : 0); + + pide_pt_hdr_out = (PHPT_PASS_THROUGH_HEADER)param.out; + + if ((ioctl(fbcon->device, HPT_DO_IOCONTROL, ¶m)!=0) || + (pide_pt_hdr_out->command & 1)) { + return -1; + } + + if (command==STATUS_CHECK){ + unsigned const char normal_lo=0x4f, normal_hi=0xc2; + unsigned const char failed_lo=0xf4, failed_hi=0x2c; + unsigned char low,high; + + high = pide_pt_hdr_out->lbahigh; + low = pide_pt_hdr_out->lbamid; + + // Cyl low and Cyl high unchanged means "Good SMART status" + if (low==normal_lo && high==normal_hi) + return 0; + + // These values mean "Bad SMART status" + if (low==failed_lo && high==failed_hi) + return 1; + + // We haven't gotten output that makes sense; print out some debugging info + char buf[512]; + sprintf(buf,"CMD=0x%02x\nFR =0x%02x\nNS =0x%02x\nSC =0x%02x\nCL =0x%02x\nCH =0x%02x\nRETURN =0x%04x\n", + (int)pide_pt_hdr_out->command, + (int)pide_pt_hdr_out->feature, + (int)pide_pt_hdr_out->sectorcount, + (int)pide_pt_hdr_out->lbalow, + (int)pide_pt_hdr_out->lbamid, + (int)pide_pt_hdr_out->lbahigh, + (int)pide_pt_hdr_out->sectors); + printwarning(BAD_SMART,buf); + } + else if (command==CHECK_POWER_MODE) + data[0] = pide_pt_hdr_out->sectorcount & 0xff; + else if (pide_pt_hdr->protocol==HPT_READ) + memcpy(data, (unsigned char *)buff + 2 * sizeof(HPT_PASS_THROUGH_HEADER), pide_pt_hdr->sectors * 512); + return 0; } int areca_command_interface(__unused int fd, __unused int disknum, __unused smart_command_set command, __unused int select, __unused char *data) { @@ -882,6 +1041,17 @@ static int get_tw_channel_unit (const char* name, int* unit, int* dev) { return 0; } +static int hpt_hba(const char* name) { + int i=0; + const char *hpt_node[]={"hptmv", "hptmv6", "hptrr", "hptiop", "hptmviop", "hpt32xx", "rr2320", + "rr232x", "rr2310", "rr2310_00", "rr2300", "rr2340", "rr1740", NULL}; + while (hpt_node[i]) { + if (!strncmp(name, hpt_node[i], strlen(hpt_node[i]))) + return 1; + i++; + } + return 0; +} #ifndef ATA_DEVICE #define ATA_DEVICE "/dev/ata" @@ -1030,6 +1200,11 @@ static int parse_ata_chan_dev(const char * dev_name, struct freebsd_dev_channel } return CONTROLLER_3WARE_678K_CHAR; } + + if (hpt_hba(dev_name)) { + return CONTROLLER_HPT; + } + // form /dev/ciss* if (!strncmp(fbsd_dev_cciss, dev_name, strlen(fbsd_dev_cciss))) diff --git a/sm5/os_freebsd.h b/sm5/os_freebsd.h index 47c96532b312ed6d468fa0ceab0544e998bdcbb9..6793a43484e112a39b1aa52f61ab96e1e8bb35a1 100644 --- a/sm5/os_freebsd.h +++ b/sm5/os_freebsd.h @@ -82,7 +82,7 @@ #ifndef OS_FREEBSD_H_ #define OS_FREEBSD_H_ -#define OS_FREEBSD_H_CVSID "$Id: os_freebsd.h,v 1.25 2008/03/29 23:32:11 shattered Exp $\n" +#define OS_FREEBSD_H_CVSID "$Id: os_freebsd.h,v 1.26 2009/01/14 02:39:00 sxzzsf Exp $\n" struct freebsd_dev_channel { int channel; // the ATA channel to work with @@ -574,6 +574,56 @@ typedef struct tw_osli_ioctl_with_payload { #endif +#define HPT_CTL_CODE(x) (x+0xFF00) +#define HPT_IOCTL_GET_CHANNEL_INFO HPT_CTL_CODE(3) +#define HPT_IOCTL_GET_CHANNEL_INFO_V2 HPT_CTL_CODE(53) +#define HPT_IOCTL_IDE_PASS_THROUGH HPT_CTL_CODE(24) + +#define HPT_READ 1 +#define HPT_WRITE 2 + +#define HPT_IOCTL_MAGIC 0xA1B2C3D4 + +#define MAXDEV_PER_CHANNEL 2 +#define PMPORT_PER_CHANNEL 15 /* max devices connected to this channel via pmport */ + +typedef struct _HPT_CHANNEL_INFO { + unsigned int reserve1; + unsigned int reserve2; + unsigned int devices[MAXDEV_PER_CHANNEL]; +} HPT_CHANNEL_INFO, *PHPT_CHANNEL_INFO; + +typedef struct _HPT_CHANNEL_INFO_V2 { + unsigned int reserve1; + unsigned int reserve2; + unsigned int devices[PMPORT_PER_CHANNEL]; +} HPT_CHANNEL_INFO_V2, *PHPT_CHANNEL_INFO_V2; + +typedef struct _HPT_IOCTL_PARAM { + unsigned int magic; /* used to check if it's a valid ioctl packet */ + unsigned int ctrl_code; /* operation control code */ + void* in; /* input data buffer */ + unsigned int in_size; /* size of input data buffer */ + void* out; /* output data buffer */ + unsigned int out_size; /* size of output data buffer */ + void* returned_size; /* count of chars returned */ +} HPT_IOCTL_PARAM, *PHPT_IOCTL_PARAM; +#define HPT_DO_IOCONTROL _IOW('H', 0, HPT_IOCTL_PARAM) + +typedef struct _HPT_PASS_THROUGH_HEADER { + unsigned int id; /* disk ID */ + unsigned char feature; + unsigned char sectorcount; + unsigned char lbalow; + unsigned char lbamid; + unsigned char lbahigh; + unsigned char driverhead; + unsigned char command; + unsigned char sectors; /* data size in sectors, if the command has data transfer */ + unsigned char protocol; /* HPT_(READ,WRITE) or zero for non-DATA */ + unsigned char reserve[3]; +} +HPT_PASS_THROUGH_HEADER, *PHPT_PASS_THROUGH_HEADER; #ifndef __unused #define __unused __attribute__ ((__unused__)) diff --git a/sm5/smartctl.8.in b/sm5/smartctl.8.in index 2845a22f28c89f422dc39f30d80b953f869db749..f9d87e76f0ff46c4779f7edab3f7e4e7b6d4b9f0 100644 --- a/sm5/smartctl.8.in +++ b/sm5/smartctl.8.in @@ -1,7 +1,7 @@ .ig Copyright (C) 2002-8 Bruce Allen <smartmontools-support@lists.sourceforge.net> - $Id: smartctl.8.in,v 1.117 2008/12/12 12:38:08 steffeng Exp $ + $Id: smartctl.8.in,v 1.118 2009/01/14 02:39:00 sxzzsf Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -213,8 +213,8 @@ use the exit status of \fBsmartctl\fP (see RETURN VALUES below). .TP .B \-d TYPE, \-\-device=TYPE Specifies the type of the device. The valid arguments to this option -are \fIata\fP, \fIscsi\fP, \fIsat\fP, \fImarvell\fP, \fI3ware,N\fP, \fIareca,N\fP, \fIusbcypress\fP, and \fIhpt,L/M\fP, -\fIcciss,N\fP or \fIhpt,L/M/N\fP. If this option is not used then +are \fIata\fP, \fIscsi\fP, \fIsat\fP, \fImarvell\fP, \fI3ware,N\fP, \fIareca,N\fP, \fIusbcypress\fP, \fIcciss,N\fP, and +\fIhpt,L/M\fP (or \fIhpt,L/M/N\fP). If this option is not used then \fBsmartctl\fP will attempt to guess the device type from the device name. The \'sat\' device type is for ATA disks that have a SCSI to ATA @@ -351,21 +351,28 @@ error messages and no SMART information. To look at (S)ATA disks behind HighPoint RocketRAID controllers, use syntax such as: .nf -\fBsmartctl \-a \-d hpt,1/3 /dev/sda\fP +\fBsmartctl \-a \-d hpt,1/3 /dev/sda\fP (under Linux) .fi -or .nf -\fBsmartctl \-a \-d hpt,1/2/3 /dev/sda\fP +\fBsmartctl \-a \-d hpt,1/2/3 /dev/sda\fP (under Linux) +.fi +.nf +\fBsmartctl \-a \-d hpt,1/3 /dev/hptrr\fP (under FreeBSD) +.fi +.nf +\fBsmartctl \-a \-d hpt,1/2/3 /dev/hptrr\fP (under FreeBSD) .fi where in the argument \fIhpt,L/M\fP or \fIhpt,L/M/N\fP, the integer L is the controller id, the integer M is the channel number, and the integer N is the PMPort number if it is available. The allowed values of L are from 1 to 4 -inclusive, M are from 1 to 8 inclusive and N from 1 to 4 if PMPort available. +inclusive, M are from 1 to 8 inclusive and N from 1 to 5 if PMPort available. Note that the /dev/sda\-z form should be the device node which stands for -the disks derived from the HighPoint RocketRAID controllers. And also -these values are limited by the model of the HighPoint RocketRAID controller. +the disks derived from the HighPoint RocketRAID controllers under Linux and +under FreeBSD, it is the character device which the driver registered (eg, +/dev/hptrr, /dev/hptmv6). And also these values are limited by the model +of the HighPoint RocketRAID controller. -.B HighPoint RocketRAID controllers are currently ONLY supported under Linux. +.B HighPoint RocketRAID controllers are currently ONLY supported under Linux and FreeBSD. .B cciss controllers are currently ONLY supported under Linux. @@ -1481,14 +1488,16 @@ Start a long self\-test on the fourth SATA disk connected to an Areca RAID controller addressed by /dev/sg2. .PP .nf -.B smartctl \-a \-d hpt,1/3 /dev/sda +.B smartctl \-a \-d hpt,1/3 /dev/sda (under Linux) +.B smartctl \-a \-d hpt,1/3 /dev/hptrr (under FreeBSD) .fi Examine all SMART data for the (S)ATA disk directly connected to the third channel of the first HighPoint RocketRAID controller card. .nf .PP .nf -.B smartctl \-t short \-d hpt,1/1/2 /dev/sda +.B smartctl \-t short \-d hpt,1/1/2 /dev/sda (under Linux) +.B smartctl \-t short \-d hpt,1/1/2 /dev/hptrr (under FreeBSD) .fi Start a short self\-test on the (S)ATA disk connected to second pmport on the first channel of the first HighPoint RocketRAID controller card. @@ -1635,7 +1644,7 @@ these documents may be found in the References section of the .SH CVS ID OF THIS PAGE: -$Id: smartctl.8.in,v 1.117 2008/12/12 12:38:08 steffeng Exp $ +$Id: smartctl.8.in,v 1.118 2009/01/14 02:39:00 sxzzsf Exp $ .\" Local Variables: .\" mode: nroff .\" End: diff --git a/sm5/smartd.8.in b/sm5/smartd.8.in index c84f505a18b6b86669a476b4108177a634b54581..365d9a96d3f061882b2315ccbae5cec3be1d1485 100644 --- a/sm5/smartd.8.in +++ b/sm5/smartd.8.in @@ -1,7 +1,7 @@ .ig Copyright (C) 2002-8 Bruce Allen <smartmontools-support@lists.sourceforge.net> -$Id: smartd.8.in,v 1.133 2008/11/04 19:28:42 chrfranke Exp $ +$Id: smartd.8.in,v 1.134 2009/01/14 02:39:00 sxzzsf Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -601,16 +601,25 @@ Section below! .B # Three SATA disks on a HighPoint RocketRAID controller. .B # Start short self-tests daily between 1-2, 2-3, and .B # 3-4 am. +.B # under Linux .B \ \ /dev/sde -d hpt,1/1 -a -s S/../.././01 .B \ \ /dev/sde -d hpt,1/2 -a -s S/../.././02 .B \ \ /dev/sde -d hpt,1/3 -a -s S/../.././03 +.B # or under FreeBSD +.B # /dev/hptrr -d hpt,1/1 -a -s S/../.././01 +.B # /dev/hptrr -d hpt,1/2 -a -s S/../.././02 +.B # /dev/hptrr -d hpt,1/3 -a -s S/../.././03 .B # .nf .B # Two SATA disks connected to a HighPoint RocketRAID .B # via a pmport device. Start long self-tests Sundays .B # between midnight and 1am and 2-3 am. +.B # under Linux .B \ \ /dev/sde -d hpt,1/4/1 -a -s L/../../7/00 .B \ \ /dev/sde -d hpt,1/4/2 -a -s L/../../7/02 +.B # or under FreeBSD +.B # /dev/hptrr -d hpt,1/4/1 -a -s L/../../7/00 +.B # /dev/hptrr -d hpt,1/4/2 -a -s L/../../7/02 .B # .nf .B # Three SATA disks connected to an Areca @@ -813,7 +822,7 @@ In log files and email messages this disk will be identified as hpt_X/X/X and X/X/X is the same as L/M/N, note if no N indicated, N set to the default value 1. -.B HighPoint RocketRAID controllers are currently ONLY supported under Linux. +.B HighPoint RocketRAID controllers are currently ONLY supported under Linux and FreeBSD. .I removable \- the device or its media is removable. This indicates to @@ -1232,11 +1241,11 @@ HighPoint RocketRAID controller. is set to the device description. For SMARTD_DEVICETYPE of ata or scsi, this is the same as SMARTD_DEVICE. For 3ware RAID controllers, the form used is \'/dev/sdc [3ware_disk_01]\'. For HighPoint -RocketRAID controller, the form is \'/dev/sdd [hpt_1/1/1]\'. For -Areca controllers, the form is \'/dev/sg2 [areca_disk_09]\'. In these -cases the device string contains a space and is NOT quoted. So to use -$SMARTD_DEVICESTRING in a bash script you should probably enclose it -in double quotes. +RocketRAID controller, the form is \'/dev/sdd [hpt_1/1/1]\' under Linux +or \'/dev/hptrr [hpt_1/1/1]\' under FreeBSD. For Areca controllers, the +form is \'/dev/sg2 [areca_disk_09]\'. In these cases the device string +contains a space and is NOT quoted. So to use $SMARTD_DEVICESTRING in a +bash script you should probably enclose it in double quotes. .IP \fBSMARTD_FAILTYPE\fP 4 gives the reason for the warning or message email. The possible values that it takes and their meanings are: @@ -2036,7 +2045,7 @@ The following have made large contributions to smartmontools: \fBSergey Svishchev\fP (NetBSD interface) \fBDavid Snyder and Sergey Svishchev\fP (OpenBSD interface) \fBPhil Williams\fP (User interface and drive database) -\fBShengfeng Zhou\fP (Linux HighPoint RocketRAID interface) +\fBShengfeng Zhou\fP (Linux/FreeBSD HighPoint RocketRAID interface) .fi Many other individuals have made smaller contributions and corrections. @@ -2087,4 +2096,4 @@ smartmontools home page at \fBhttp://smartmontools.sourceforge.net/#references\f .SH CVS ID OF THIS PAGE: -$Id: smartd.8.in,v 1.133 2008/11/04 19:28:42 chrfranke Exp $ +$Id: smartd.8.in,v 1.134 2009/01/14 02:39:00 sxzzsf Exp $ diff --git a/sm5/smartd.conf.5.in b/sm5/smartd.conf.5.in index 3ca9e855201ff56588483c07f039bdb8003964a9..ee39a88fcab4ab176b3cd152f03c4364eb538f67 100644 --- a/sm5/smartd.conf.5.in +++ b/sm5/smartd.conf.5.in @@ -1,7 +1,7 @@ .ig Copyright (C) 2002-8 Bruce Allen <smartmontools-support@lists.sourceforge.net> -$Id: smartd.conf.5.in,v 1.97 2008/11/04 19:28:42 chrfranke Exp $ +$Id: smartd.conf.5.in,v 1.98 2009/01/14 02:39:00 sxzzsf Exp $ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -186,16 +186,25 @@ Section below! .B # Three SATA disks on a HighPoint RocketRAID controller. .B # Start short self-tests daily between 1-2, 2-3, and .B # 3-4 am. +.B # under Linux .B \ \ /dev/sde -d hpt,1/1 -a -s S/../.././01 .B \ \ /dev/sde -d hpt,1/2 -a -s S/../.././02 .B \ \ /dev/sde -d hpt,1/3 -a -s S/../.././03 +.B # or under FreeBSD +.B # /dev/hptrr -d hpt,1/1 -a -s S/../.././01 +.B # /dev/hptrr -d hpt,1/2 -a -s S/../.././02 +.B # /dev/hptrr -d hpt,1/3 -a -s S/../.././03 .B # .nf .B # Two SATA disks connected to a HighPoint RocketRAID .B # via a pmport device. Start long self-tests Sundays .B # between midnight and 1am and 2-3 am. +.B # under Linux .B \ \ /dev/sde -d hpt,1/4/1 -a -s L/../../7/00 .B \ \ /dev/sde -d hpt,1/4/2 -a -s L/../../7/02 +.B # or under FreeBSD +.B # /dev/hptrr -d hpt,1/4/1 -a -s L/../../7/00 +.B # /dev/hptrr -d hpt,1/4/2 -a -s L/../../7/02 .B # .nf .B # Three SATA disks connected to an Areca @@ -817,11 +826,11 @@ HighPoint RocketRAID controller. is set to the device description. For SMARTD_DEVICETYPE of ata or scsi, this is the same as SMARTD_DEVICE. For 3ware RAID controllers, the form used is \'/dev/sdc [3ware_disk_01]\'. For HighPoint -RocketRAID controller, the form is \'/dev/sdd [hpt_1/1/1]\'. For -Areca controllers, the form is \'/dev/sg2 [areca_disk_09]\'. In these -cases the device string contains a space and is NOT quoted. So to use -$SMARTD_DEVICESTRING in a bash script you should probably enclose it -in double quotes. +RocketRAID controller, the form is \'/dev/sdd [hpt_1/1/1]\' under Linux +or \'/dev/hptrr [hpt_1/1/1]\' under FreeBSD. For Areca controllers, the +form is \'/dev/sg2 [areca_disk_09]\'. In these cases the device string +contains a space and is NOT quoted. So to use $SMARTD_DEVICESTRING in a +bash script you should probably enclose it in double quotes. .IP \fBSMARTD_FAILTYPE\fP 4 gives the reason for the warning or message email. The possible values that it takes and their meanings are: @@ -1442,4 +1451,4 @@ SEE ALSO: .SH CVS ID OF THIS PAGE: -$Id: smartd.conf.5.in,v 1.97 2008/11/04 19:28:42 chrfranke Exp $ +$Id: smartd.conf.5.in,v 1.98 2009/01/14 02:39:00 sxzzsf Exp $