hdparm -i

0neg 0neg w poczta.gazeta.pl
Nie, 5 Maj 2002, 23:14:02 CEST


Michal Kochanowicz wrote:
> On Sun, May 05, 2002 at 10:18:44PM +0200, 0neg wrote:
> 
>>Sprawdziłem w kodzie. ata_minor_str to 32 zdefiniowane na sztywno
>>stringi. Więc id->minor_rev_num może mieć wartości od 0 do 31.
> 
> Też właśnie na to patrzę:
>         if ((id->minor_rev_num) || (id->major_rev_num)) {
>                 printf("\n Drive Supports : ");
>                 printf("%s", ata_minor_str[id->minor_rev_num]);
>                 for (i=0; i<=15; i++) {
>                         if (id->major_rev_num & (1<<i))
>                                 printf("%s", ata_major_str[i]);
>                 }
>         }
> Dla mnie to jest wyjątkowo posrane. 

Nieco. id->major_rev_num jak rozumiem, to jakaś maska bitowa,
z której wynika co dysk potrafi. A minor to jakiś podtyp
interfejsu ATA. Obie tablice ata_major_str i ata_minor_str
są zdefinowane na początku hdparm.c (linia 131)

> Żadnego sprawdzania, czy nie
> wyjeżdża się poza tablice. Inna sprawa, że ja chyba jakiś
> niedorozwinięty jestem bo nigdzie nie mogę znaleźć deklraracji
> minor_rev_num...

<linux/hdreg.h>
struct hd_driveid {
[...]
         unsigned short  major_rev_num;  /*  */
         unsigned short  minor_rev_num;  /*  */

Nie ma to jak wiele mówiący komentarz ;-)

A wartości do tej struktury są brane w hdpram.c z ioctl (linia 1222):

#ifdef HDIO_OBSOLETE_IDENTITY
                 if (!(old_identity = ioctl(fd, HDIO_GET_IDENTITY, &id))
                     || !ioctl(fd, HDIO_OBSOLETE_IDENTITY)) {
#else
                 if (!ioctl(fd, HDIO_GET_IDENTITY, &id)) {
                         old_identity = 1;
#endif

I odnoszę nieodparte wrażenie, że w przypadku tego dysku wartości
id->minor_rev_num i id->major_rev_num zwrócone przez ioctl są bez
sensu. id->minor_rev_num == 0xFFFFFF, id->major_rev_num = 7
(a major MSZ, powinno być parzyste, bo bit jedności odpowiada
  napisowi 'reserved')

hdparm -I też daje ciekawe rezultaty.. m.in. coś takiego
  DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma10
                                            ^^^^^^(WTF?)

bart
-- 
                    AK-47: *** No targets.  Stop.
   bart @bart.w-wa.pl || http://bart.w-wa.pl || http://faq.pl/php/



Więcej informacji o liście dyskusyjnej pld-users-pl