From: <kn...@mo...> - 2002-11-14 23:33:18
|
Greets! Just updated from smartsuite-2.1 to smartmontools-5.0-42. I needed to do a small modification to get the new smartd working on my setup - namely comment out this part of smartd.c: diff -Naur smartmontools-vanilla/smartd.c smartmontools-5.0-42/smartd.c --- smartmontools-vanilla/smartd.c 2002-11-13 11:59:32.000000000 +0100 +++ smartmontools-5.0-42/smartd.c 2002-11-15 00:21:50.000000000 +0100 @@ -448,12 +448,12 @@ printout(LOG_INFO,"Device: %s, opened\n", device); // check that it's ready for commands - if (!testunitready(fd)){ +/* if (!testunitready(fd)){ printout(LOG_INFO,"Device: %s, Failed Test Unit Ready\n", device); close(fd); return 2; } - +*/ // make sure that we can read mode page if (modesense(fd, 0x1c, (UINT8 *) &tBuf)){ printout(LOG_INFO,"Device: %s, Failed read of ModePage 0x1c\n", device); ... after that it seems to work fine. Not too much interesting info from my /dev/sda, though :) root@monster:/tmp/smartmontools-5.0-42# smartctl -a /dev/sda smartctl version 5.0-42 Copyright (C) 2002 Bruce Allen Home page is http://smartmontools.sourceforge.net/ Device: MegaRAID LD0 RAID5 35000R Version: H79N Device supports S.M.A.R.T. and is Enabled Temperature Warning Disabled or Not Supported S.M.A.R.T. Sense: Ok! ... and just what smartd is monitoring in this case is a bit interesting, since /dev/sda is a RAID5 logical volume on an ami megaraid controller :)= ... whether the controller fakes some always-ok SMART data, or creates a composite from its underlying disks, I have no idea. The underlying disks are not visible to linux at all, AFAIK. Anything you want me to try? -- Erik I. Bolsø | email: <knan at mo.himolde.no> The UNIX philosophy basically involves giving you enough rope to hang yourself. And then a couple of feet more, just to be sure. |
From: Bruce A. <ba...@gr...> - 2002-11-15 14:37:27
|
Hi Erik, On Fri, 15 Nov 2002, [ISO-8859-1] Erik Inge Bols=F8 wrote: > Greets! >=20 > Just updated from smartsuite-2.1 to smartmontools-5.0-42. >=20 > I needed to do a small modification to get the new smartd working on my > setup - namely comment out this part of smartd.c: In comparing the codes (smartsuite-2.1 and smartmontools-5.0.42) I don't see why this was needed. Smartsuite-2.1 had: UINT8 testunitready (int device) { return ioctl( device, 2 , NULL); } if ( testunitready (fd) =3D=3D 0 ){ =09proceed to register device } and smartmontools has identical code. So I don't understand why this would work differently between the two codes. >=20 > diff -Naur smartmontools-vanilla/smartd.c smartmontools-5.0-42/smartd.c > --- smartmontools-vanilla/smartd.c 2002-11-13 11:59:32.000000000 +01= 00 > +++ smartmontools-5.0-42/smartd.c 2002-11-15 00:21:50.000000000 +01= 00 > @@ -448,12 +448,12 @@ > printout(LOG_INFO,"Device: %s, opened\n", device); >=20 > // check that it's ready for commands > - if (!testunitready(fd)){ > +/* if (!testunitready(fd)){ > printout(LOG_INFO,"Device: %s, Failed Test Unit Ready\n", device); > close(fd); > return 2; > } > - > +*/ > // make sure that we can read mode page > if (modesense(fd, 0x1c, (UINT8 *) &tBuf)){ > printout(LOG_INFO,"Device: %s, Failed read of ModePage 0x1c\n", devi= ce); Also, instead of eliminating testunitready just issue a warning: // check that it's ready for commands if (!testunitready(fd)){ printout(LOG_INFO,"Device: %s, Warning: failed Test Unit Ready\n", device); } From=20the SCSI docs that I read, shouldn't testunitready return 0? Or perhaps the IOCTL is simply wrong. > ... after that it seems to work fine. Not too much interesting info from > my /dev/sda, though :) >=20 > root@monster:/tmp/smartmontools-5.0-42# smartctl -a /dev/sda > smartctl version 5.0-42 Copyright (C) 2002 Bruce Allen > Home page is http://smartmontools.sourceforge.net/ >=20 > Device: MegaRAID LD0 RAID5 35000R Version: H79N > Device supports S.M.A.R.T. and is Enabled > Temperature Warning Disabled or Not Supported > S.M.A.R.T. Sense: Ok! >=20 > ... and just what smartd is monitoring in this case is a bit interesting, > since /dev/sda is a RAID5 logical volume on an ami megaraid controller :)= =3D > ... whether the controller fakes some always-ok SMART data, or creates a > composite from its underlying disks, I have no idea. The underlying disks > are not visible to linux at all, AFAIK. I have no idea -- it would be nice if the smart status were a composite of the smart status of the array disks. You could always write a note to MegaRAID to ask, I suppose! Cheers, =09Bruce |
From: <kn...@mo...> - 2002-11-16 11:27:14
|
On Fri, 15 Nov 2002, Bruce Allen wrote: >Hi Erik, > >In comparing the codes (smartsuite-2.1 and smartmontools-5.0.42) I don't >see why this was needed. Smartsuite-2.1 had: > >UINT8 testunitready (int device) >{ > return ioctl( device, 2 , NULL); > >} > > if ( testunitready (fd) == 0 ){ > proceed to register device >} > >and smartmontools has identical code. So I don't understand why this >would work differently between the two codes. Ignore my previous patches. They were broken... smartsuite-2.1 smartd.c had: if testunitready(fd)==0 ... proceed smartmontools smartd.c has: if !testunitready(fd) ... error out Reversed logic in smartmontools, I believe. If ! would match the 0 return value, which is command success. This new patch fixes it properly, to do "if testunitready(fd) != 0 ... error out" I'm still not able to access sourceforge cvs except anonymously. knan@monster:~/arbeidskatalog-cvs/sm5$ cvs diff cvs server: Diffing . Index: smartd.c =================================================================== RCS file: /cvsroot/smartmontools/sm5/smartd.c,v retrieving revision 1.64 diff -r1.64 smartd.c 451c451 < if (!testunitready(fd)){ --- > if (testunitready(fd) != 0) { -- Erik I. Bolsø | email: <knan at mo.himolde.no> The UNIX philosophy basically involves giving you enough rope to hang yourself. And then a couple of feet more, just to be sure. |
From: Bruce A. <ba...@gr...> - 2002-11-16 18:27:51
|
Hi Eric, > > if ( testunitready (fd) == 0 ){ > > proceed to register device > >} > > > >and smartmontools has identical code. So I don't understand why this > >would work differently between the two codes. > > Ignore my previous patches. They were broken... > > smartsuite-2.1 smartd.c had: if testunitready(fd)==0 ... proceed > smartmontools smartd.c has: if !testunitready(fd) ... error out > > Reversed logic in smartmontools, I believe. If ! would match the 0 > return value, which is command success. This new patch fixes it > properly, to do "if testunitready(fd) != 0 ... error out" I completely agree with your logic -- this was broken in smartd. It was my mistake. > I'm still not able to access sourceforge cvs except anonymously. I just checked in the fix into CVS, since I think it's such an egregious error and you don't have access. I'll also issue a corrected release as soon as the sourceforge services start to work again. > knan@monster:~/arbeidskatalog-cvs/sm5$ cvs diff > cvs server: Diffing . > Index: smartd.c > =================================================================== > RCS file: /cvsroot/smartmontools/sm5/smartd.c,v > retrieving revision 1.64 > diff -r1.64 smartd.c > 451c451 > < if (!testunitready(fd)){ > --- > > if (testunitready(fd) != 0) { I just changed this to if (testunitready(fd)){ since of course any nonzero value is true. Since sourceforge is unstable this weekend, this *may* be the source of your problems. Can you try again now? Don't forget to do CVS update! Cheers, Bruce |
From: Bruce A. <ba...@gr...> - 2002-11-17 06:36:16
|
Hi Erik, I hope you have at last gotten CVS access. I've issued a new release 5.0-45 with the correct logic for testunitready, which I have renamed to testunitnotready(). I added the testunitnotready() check into smartctl for consistency with smartd. Please let me know if it looks OK to you now. NOTE TO USERS: The bug in question only affects smartd users with scsi devices. To see if your version of smartd has the testunitready() bug, do smartd -V If the version of the module smartd.c in a line like: Module: smartd.c revision: 1.66 date: 2002/11/17 has a revision greater than or equal to 1.30, and less than or equal to 1.64, then your version of the code has this problem. This problem affected releases starting with RELEASE_5_0_16 up to and including RELEASE_5_0_43. Cheers, Bruce On Sat, 16 Nov 2002, Bruce Allen wrote: > Hi Eric, > > > > if ( testunitready (fd) == 0 ){ > > > proceed to register device > > >} > > > > > >and smartmontools has identical code. So I don't understand why this > > >would work differently between the two codes. > > > > Ignore my previous patches. They were broken... > > > > smartsuite-2.1 smartd.c had: if testunitready(fd)==0 ... proceed > > smartmontools smartd.c has: if !testunitready(fd) ... error out > > > > Reversed logic in smartmontools, I believe. If ! would match the 0 > > return value, which is command success. This new patch fixes it > > properly, to do "if testunitready(fd) != 0 ... error out" > > I completely agree with your logic -- this was broken in smartd. It was > my mistake. > > > I'm still not able to access sourceforge cvs except anonymously. > > I just checked in the fix into CVS, since I think it's such an egregious > error and you don't have access. I'll also issue a corrected release as > soon as the sourceforge services start to work again. > > > knan@monster:~/arbeidskatalog-cvs/sm5$ cvs diff > > cvs server: Diffing . > > Index: smartd.c > > =================================================================== > > RCS file: /cvsroot/smartmontools/sm5/smartd.c,v > > retrieving revision 1.64 > > diff -r1.64 smartd.c > > 451c451 > > < if (!testunitready(fd)){ > > --- > > > if (testunitready(fd) != 0) { > > I just changed this to > if (testunitready(fd)){ > > since of course any nonzero value is true. > > Since sourceforge is unstable this weekend, this *may* be the source of > your problems. Can you try again now? > > Don't forget to do CVS update! > > Cheers, > Bruce > > > > ------------------------------------------------------- > This sf.net email is sponsored by: To learn the basics of securing > your web site with SSL, click here to get a FREE TRIAL of a Thawte > Server Certificate: http://www.gothawte.com/rd524.html > _______________________________________________ > Smartmontools-support mailing list > Sma...@li... > https://lists.sourceforge.net/lists/listinfo/smartmontools-support > |