Re: hdparm oder Kernel - wer sagt die Wahrheit?
> Ich habe mal ein wenig in den Kernel-Sourcen gegraben und folgendes
> herausgefunden:
>
> Das Abschalten der HPA findet in der ide-disk.c in der Funktion
> idedisk_set_max_address() bzw. in der idedisk_set_max_address_ext() statt.
>
> Das Auslesen der Plattenparameter findet in
> idedisk_read_native_max_address_ext() bzw. in
> idedisk_read_native_max_address() statt.
>
> In dem idedisk_read_*() ist in der Tat auch ein addr++ zu finden, das
> einen um 1 erhöhten Wert des von der Platte gelieferten
> maximalen Sektors zurückliefert. Auskommentieren von dem Inkrement ist
> zwar eklig - aber etwas klügeres fiel mir erst mal nicht ein, da ich den
> Wirkungszusammenhang in der ide-disk.c noch nicht so ganz im
> Detail verstanden habe.
Egal ob eklig, unverstanden oder was auch immer: Der schnelle Erfolg gibt
einem Recht. ;-)
Die Meldungen vom Boot:
SIS5513: SiS 962/963 MuTIOL IDE UDMA133 controller
ide0: BM-DMA at 0xff00-0xff07, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xff08-0xff0f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: ST340823A, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: JLMS XJ-HD165H, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: 78165360 sectors (40020 MB) w/1024KiB Cache, CHS=65535/16/63,
UDMA(100)
hda: hda1 hda2
hdc: ATAPI 48X DVD-ROM drive, 512kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
Attempting manual resume
ReiserFS: hda1: found reiserfs format "3.6" with standard journal
ReiserFS: hda1: using ordered data mode
ReiserFS: hda1: journal params: device hda1, size 8192, journal first
block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: hda1: checking transaction log (hda1)
ReiserFS: hda1: Using r5 hash to sort names
war die Wirkungsweise von:
static unsigned long idedisk_read_native_max_address(ide_drive_t *drive)
...
/* addr++; since the return value is (maxlba - 1),
static unsigned long long idedisk_read_native_max_address_ext(ide_drive_t *drive)
...
/* addr++; since the return value is (maxlba - 1),
in der drivers/ide/ide-disk.c vom Kernel-Source in den beiden genannten
Funktionen.
Eigentlich gehört nun eine entsprechende Blacklist von Festplatten hier
implementiert, die den maximalen Sektor bei 1 statt bei 0 anfangen zu
zählen, aber für mich tut's der quick-fix wie oben angegeben.
Zu den in Frage kommenden Festplatten gehört mindestens mal die D540X-4K
von Maxtor auch dazu.
t++
Reply to: