Avanti Indietro Indice

12. Il limite dei 65535 cilindri in Linux

La chiamata HDIO_GETGEO memorizza il numero dei cilindri in una variabile di tipo short. Questo vuol dire che se si hanno più di 65535 cilindri il loro valore verrà troncato e (per una tipica configurazione SCSI com 1MiB di cilindri) un disco da 80 GiB apparirà come uno da 16 GiB. Una volta riconosciuto tale problema è facile evitarlo.

12.1 Problemi dei controller IDE con dischi di dimensioni superiori ai 34 GB

I dischi superiori ai 33.8 GB non sono utilizzabili con i kernel precedenti alla versione 2.3.21. Appresso si riportano i dettagli. Ipotizziamo l'acquisto di un nuovo disco IBM-DPTA-373420 con una capacità di 66835440 settori (34.2 GB). I kernel ante 2.3.21 riporterebbero una dimensione di 769*16*63 = 775152 settori (0.4 GB) che è una cosa spiacevole. Se fornissimo i parametri hdc=4160,255,63 da linea di comando non otterremmo alcun effetto - tale valori sarebbero ignorati. Ma cosa succede? La funzione idedisk_setup() utilizza la geometria fornita dal disco (che è 16383/16/63) e sovrascrive i valori specificati dall'utente da linea di comando che vengono utilizzati solo per impostare la geometria da passare al BIOS. La funzione current_capacity() o idedisk_capacity() ricalcola il numero dei cilindri come 66835440/(16*63)=66305 poichè tale valore è memorizzato in una variabile short diviene 769.Fino a quando lba_capacity_is_ok() non distrugge id->cyls ogni sua chiamata successiva riporterà il valore falso, di conseguenza la capacità del disco diviene 769*16*63. È disponibile un aggiornamento per diverse versioni del kernel. Una "patch" per la versione 2.0.38 può esere trovata presso: ftp.kernel.org. Una "patch" per la versione 2.2.12 può essere trovata presso: www.uwsg.indiana.edu (potrebbero essere necessarie delle modifiche per eliminare i delimitatori del linguaggio html). I kernel della serie 2.2.14 gestiscono tali dischi. La serie 2.3.* gestisce questi dischi a partire dalla versione 2.3.21. È possibile "risolvere" il problema a livello hardware utilizzando un ponticello (jumper) per impostare la dimensione di 33.8 GB. In molti casi sarà necessario un aggiornamento del BIOS se si vuole utilizzare tali dischi come dischi d'avvio del sistema.


Avanti Indietro Indice

Hosting by: hurra.com
Generated: 2007-01-26 17:56:16