diff options
Diffstat (limited to 'sysutils/smartmontools-devel/files/patch-os_freebsd.c')
-rw-r--r-- | sysutils/smartmontools-devel/files/patch-os_freebsd.c | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/sysutils/smartmontools-devel/files/patch-os_freebsd.c b/sysutils/smartmontools-devel/files/patch-os_freebsd.c deleted file mode 100644 index 74c78fcf7bd0..000000000000 --- a/sysutils/smartmontools-devel/files/patch-os_freebsd.c +++ /dev/null @@ -1,308 +0,0 @@ ---- os_freebsd.c.orig Sun Sep 5 09:16:07 2004 -+++ os_freebsd.c Mon May 23 19:29:43 2005 -@@ -18,6 +18,7 @@ - #include <stdio.h> - #include <sys/types.h> - #include <dirent.h> -+#include <fcntl.h> - #include <err.h> - #include <camlib.h> - #include <cam/scsi/scsi_message.h> -@@ -109,7 +110,11 @@ - } - - if (parse_ok == CONTROLLER_ATA) { -+#ifdef IOCATAREQUEST -+ if ((fdchan->device = open(dev,O_RDONLY))<0) { -+#else - if ((fdchan->atacommand = open("/dev/ata",O_RDWR))<0) { -+#endif - int myerror = errno; //preserve across free call - free (fdchan); - errno = myerror; -@@ -120,7 +125,11 @@ - if (parse_ok == CONTROLLER_3WARE_678K_CHAR) { - char buf[512]; - sprintf(buf,"/dev/twe%d",fdchan->device); -+#ifdef IOCATAREQUEST -+ if ((fdchan->device = open(buf,O_RDWR))<0) { -+#else - if ((fdchan->atacommand = open(buf,O_RDWR))<0) { -+#endif - int myerror = errno; // preserver across free call - free(fdchan); - errno=myerror; -@@ -167,8 +176,13 @@ - free(fdchan->devname); - - // close device, if open -+#ifdef IOCATAREQUEST -+ if (fdchan->device) -+ failed=close(fdchan->device); -+#else - if (fdchan->atacommand) - failed=close(fdchan->atacommand); -+#endif - - if (fdchan->scsicontrol) - failed=close(fdchan->scsicontrol); -@@ -221,7 +235,7 @@ - } - - int ata_command_interface(int fd, smart_command_set command, int select, char *data) { --#ifndef ATAREQUEST -+#if !defined(ATAREQUEST) && !defined(IOCATAREQUEST) - // sorry, but without ATAng, we can't do anything here - printwarning(BAD_KERNEL,NULL); - errno = ENOSYS; -@@ -229,7 +243,11 @@ - #else - struct freebsd_dev_channel* con; - int retval, copydata=0; -+#ifdef IOCATAREQUEST -+ struct ata_ioc_request request; -+#else - struct ata_cmd iocmd; -+#endif - unsigned char buff[512]; - - // check that "file descriptor" is valid -@@ -238,89 +256,97 @@ - - bzero(buff,512); - -+#ifdef IOCATAREQUEST -+ bzero(&request,sizeof(struct ata_ioc_request)); -+#else - bzero(&iocmd,sizeof(struct ata_cmd)); -+#endif - bzero(buff,512); -+ -+#ifndef IOCATAREQUEST - iocmd.cmd=ATAREQUEST; - iocmd.channel=con->channel; - iocmd.device=con->device; -+#define request iocmd.u.request -+#endif - -- iocmd.u.request.u.ata.command=ATA_SMART_CMD; -- iocmd.u.request.timeout=600; -+ request.u.ata.command=ATA_SMART_CMD; -+ request.timeout=600; - switch (command){ - case READ_VALUES: -- iocmd.u.request.u.ata.feature=ATA_SMART_READ_VALUES; -- iocmd.u.request.u.ata.lba=0xc24f<<8; -- iocmd.u.request.flags=ATA_CMD_READ; -- iocmd.u.request.data=buff; -- iocmd.u.request.count=512; -+ request.u.ata.feature=ATA_SMART_READ_VALUES; -+ request.u.ata.lba=0xc24f<<8; -+ request.flags=ATA_CMD_READ; -+ request.data=buff; -+ request.count=512; - copydata=1; - break; - case READ_THRESHOLDS: -- iocmd.u.request.u.ata.feature=ATA_SMART_READ_THRESHOLDS; -- iocmd.u.request.u.ata.count=1; -- iocmd.u.request.u.ata.lba=1|(0xc24f<<8); -- iocmd.u.request.flags=ATA_CMD_READ; -- iocmd.u.request.data=buff; -- iocmd.u.request.count=512; -+ request.u.ata.feature=ATA_SMART_READ_THRESHOLDS; -+ request.u.ata.count=1; -+ request.u.ata.lba=1|(0xc24f<<8); -+ request.flags=ATA_CMD_READ; -+ request.data=buff; -+ request.count=512; - copydata=1; - break; - case READ_LOG: -- iocmd.u.request.u.ata.feature=ATA_SMART_READ_LOG_SECTOR; -- iocmd.u.request.u.ata.lba=select|(0xc24f<<8); -- iocmd.u.request.u.ata.count=1; -- iocmd.u.request.flags=ATA_CMD_READ; -- iocmd.u.request.data=buff; -- iocmd.u.request.count=512; -+ request.u.ata.feature=ATA_SMART_READ_LOG_SECTOR; -+ request.u.ata.lba=select|(0xc24f<<8); -+ request.u.ata.count=1; -+ request.flags=ATA_CMD_READ; -+ request.data=buff; -+ request.count=512; - copydata=1; - break; - case IDENTIFY: -- iocmd.u.request.u.ata.command=ATA_IDENTIFY_DEVICE; -- iocmd.u.request.flags=ATA_CMD_READ; -- iocmd.u.request.data=buff; -- iocmd.u.request.count=512; -+ request.u.ata.command=ATA_IDENTIFY_DEVICE; -+ request.flags=ATA_CMD_READ; -+ request.data=buff; -+ request.count=512; - copydata=1; - break; - case PIDENTIFY: -- iocmd.u.request.u.ata.command=ATA_IDENTIFY_PACKET_DEVICE; -- iocmd.u.request.flags=ATA_CMD_READ; -- iocmd.u.request.data=buff; -- iocmd.u.request.count=512; -+ request.u.ata.command=ATA_IDENTIFY_PACKET_DEVICE; -+ request.flags=ATA_CMD_READ; -+ request.data=buff; -+ request.count=512; - copydata=1; - break; - case ENABLE: -- iocmd.u.request.u.ata.feature=ATA_SMART_ENABLE; -- iocmd.u.request.u.ata.lba=0xc24f<<8; -- iocmd.u.request.flags=ATA_CMD_CONTROL; -+ request.u.ata.feature=ATA_SMART_ENABLE; -+ request.u.ata.lba=0xc24f<<8; -+ request.flags=ATA_CMD_CONTROL; - break; - case DISABLE: -- iocmd.u.request.u.ata.feature=ATA_SMART_DISABLE; -- iocmd.u.request.u.ata.lba=0xc24f<<8; -- iocmd.u.request.flags=ATA_CMD_CONTROL; -+ request.u.ata.feature=ATA_SMART_DISABLE; -+ request.u.ata.lba=0xc24f<<8; -+ request.flags=ATA_CMD_CONTROL; - break; - case AUTO_OFFLINE: - // NOTE: According to ATAPI 4 and UP, this command is obsolete -- iocmd.u.request.u.ata.feature=ATA_SMART_AUTO_OFFLINE; -- iocmd.u.request.u.ata.lba=select|(0xc24f<<8); -- iocmd.u.request.flags=ATA_CMD_CONTROL; -+ request.u.ata.feature=ATA_SMART_AUTO_OFFLINE; -+ request.u.ata.lba=select|(0xc24f<<8); -+ request.flags=ATA_CMD_CONTROL; - break; - case AUTOSAVE: -- iocmd.u.request.u.ata.feature=ATA_SMART_AUTOSAVE; -- iocmd.u.request.u.ata.count=0xf1; // to enable autosave -- iocmd.u.request.u.ata.lba=0xc24f<<8; -- iocmd.u.request.flags=ATA_CMD_CONTROL; -+ request.u.ata.feature=ATA_SMART_AUTOSAVE; -+ request.u.ata.count=0xf1; // to enable autosave -+ request.u.ata.lba=0xc24f<<8; -+ request.flags=ATA_CMD_CONTROL; - break; - case IMMEDIATE_OFFLINE: -- iocmd.u.request.u.ata.feature=ATA_SMART_IMMEDIATE_OFFLINE; -- iocmd.u.request.u.ata.lba = select|(0xc24f<<8); // put test in sector -- iocmd.u.request.flags=ATA_CMD_CONTROL; -+ request.u.ata.feature=ATA_SMART_IMMEDIATE_OFFLINE; -+ request.u.ata.lba = select|(0xc24f<<8); // put test in sector -+ request.flags=ATA_CMD_CONTROL; - break; - case STATUS_CHECK: // same command, no HDIO in FreeBSD - case STATUS: - // this command only says if SMART is working. It could be - // replaced with STATUS_CHECK below. -- iocmd.u.request.u.ata.feature=ATA_SMART_STATUS; -- iocmd.u.request.u.ata.lba=0xc24f<<8; -- iocmd.u.request.flags=ATA_CMD_CONTROL; -+ request.u.ata.feature=ATA_SMART_STATUS; -+ request.u.ata.lba=0xc24f<<8; -+ request.flags=ATA_CMD_CONTROL; - break; - default: - pout("Unrecognized command %d in ata_command_interface()\n" -@@ -334,15 +360,19 @@ - unsigned const char failed_lo=0xf4, failed_hi=0x2c; - unsigned char low,high; - -+#ifdef IOCATAREQUEST -+ if ((retval=ioctl(con->device, IOCATAREQUEST, &request))) -+#else - if ((retval=ioctl(con->atacommand, IOCATA, &iocmd))) -+#endif - return -1; - - #if __FreeBSD_version < 502000 - printwarning(NO_RETURN,NULL); - #endif - -- high = (iocmd.u.request.u.ata.lba >> 16) & 0xff; -- low = (iocmd.u.request.u.ata.lba >> 8) & 0xff; -+ high = (request.u.ata.lba >> 16) & 0xff; -+ low = (request.u.ata.lba >> 8) & 0xff; - - // Cyl low and Cyl high unchanged means "Good SMART status" - if (low==normal_lo && high==normal_hi) -@@ -355,18 +385,22 @@ - // 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)iocmd.u.request.u.ata.command, -- (int)iocmd.u.request.u.ata.feature, -- (int)iocmd.u.request.u.ata.count, -- (int)((iocmd.u.request.u.ata.lba) & 0xff), -- (int)((iocmd.u.request.u.ata.lba>>8) & 0xff), -- (int)((iocmd.u.request.u.ata.lba>>16) & 0xff), -- (int)iocmd.u.request.error); -+ (int)request.u.ata.command, -+ (int)request.u.ata.feature, -+ (int)request.u.ata.count, -+ (int)((request.u.ata.lba) & 0xff), -+ (int)((request.u.ata.lba>>8) & 0xff), -+ (int)((request.u.ata.lba>>16) & 0xff), -+ (int)request.error); - printwarning(BAD_SMART,buf); - return 0; - } - -+#ifdef IOCATAREQUEST -+ if ((retval=ioctl(con->device, IOCATAREQUEST, &request))) { -+#else - if ((retval=ioctl(con->atacommand, IOCATA, &iocmd))) { -+#endif - perror("Failed command: "); - return -1; - } -@@ -637,7 +671,11 @@ - } - - // Now send the command down through an ioctl() -+#ifdef IOCATAREQUEST -+ ioctlreturn=ioctl(con->device,TWEIO_COMMAND,cmd); -+#else - ioctlreturn=ioctl(con->atacommand,TWEIO_COMMAND,cmd); -+#endif - - // Deal with the different error cases - if (ioctlreturn) { -@@ -709,6 +747,7 @@ - return 0; - } - -+#ifndef IOCATAREQUEST - static int get_ata_channel_unit ( const char* name, int* unit, int* dev) { - #ifndef ATAREQUEST - *dev=0; -@@ -756,7 +795,7 @@ - return 0; - #endif - } -- -+#endif - - // Guess device type (ata or scsi) based on device name (FreeBSD - // specific) SCSI device name in FreeBSD can be sd, sr, scd, st, nst, -@@ -788,11 +827,13 @@ - // form /dev/ad* or ad* - if (!strncmp(fbsd_dev_ata_disk_prefix, dev_name, - strlen(fbsd_dev_ata_disk_prefix))) { -+#ifndef IOCATAREQUEST - if (chan != NULL) { - if (get_ata_channel_unit(dev_name,&(chan->channel),&(chan->device))<0) { - return CONTROLLER_UNKNOWN; - } - } -+#endif - return CONTROLLER_ATA; - } - |