[linux] VYRIESENE: problem s prechodom na jadro 2.6.10rc1 - velke disky a stary HW
Lubomir Host
rajo na platon.sk
Středa Únor 16 11:09:27 CET 2005
On Wed, Oct 27, 2004 at 04:50:37PM +0200, Lubomir Host wrote:
> Zdravim,
>
> pouzivam starsie jadro 2.6.6-rc1 na starsom zeleze. Mam spraveny raid1
> na dvoch diskoch Maxtor 80G. Mirrorovane su jednotlive particie. Vypis
> 'mount' a 'cat /proc/mdstat' vyzera takto:
...[snip]...
> Pri upgrade na jadro 2.6.10rc1 som zobral stary .config, spravil make
> oldconfig, skompiloval, nainstaloval. Po reboote sa stalo to, ze
> posledne particie na disku "blbli". V dmesg bolo toto:
>
> ---------------------------------------------------------------%<---------------------------------------------------------------
> 2004-10-27 13:56:48 Hostname [warning] kernel: end_request: I/O error, dev hdc, sector 88078911
> 2004-10-27 13:56:49 Hostname [err] kernel: Buffer I/O error on device hdc7, logical block 23437824
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: error=0x04 { DriveStatusError }
> 2004-10-27 13:56:49 Hostname [warning] kernel: ide: failed opcode was: unknown
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: error=0x04 { DriveStatusError }
> 2004-10-27 13:56:49 Hostname [warning] kernel: ide: failed opcode was: unknown
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: error=0x04 { DriveStatusError }
> 2004-10-27 13:56:49 Hostname [warning] kernel: ide: failed opcode was: unknown
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
> 2004-10-27 13:56:49 Hostname [warning] kernel: hdc: task_in_intr: error=0x04 { DriveStatusError }
> 2004-10-27 13:56:49 Hostname [warning] kernel: ide: failed opcode was: unknown
> 2004-10-27 13:56:49 Hostname [warning] kernel: ide1: reset: success
> ---------------------------------------------------------------%<---------------------------------------------------------------
>
> V com moze byt problem? Chyba v jadre alebo v konfiguracii? Spominam
> si, ze kvoli starsiemu HW som musel zapinat v jadre volbu
> CONFIG_IDEDISK_STROKE.
>
> Diik za kazdu radu, rajo
Odpoviem si teda sam: riesenie problemu je pomerne jednoduche. Pri boote
noveho jadra (k zmene doslo niekde medzi 2.6.6 a 2.6.8) treba pouzit
parametre "hda=stroke hdc=stroke".
V starsich jadrach (< 2.6.7) bolo potrebne mat zapnutu spominanu volbu
CONFIG_IDEDISK_STROKE. V novsich jadrach to treba jadru povedat
parametrom pri bootovani.
Odpoved sa nachadzala v linux-2.6.8/drivers/ide/ide-disk.c vo funkcii
idedisk_check_hpa():
-------------------------------%<-------------------------------
static inline void idedisk_check_hpa(ide_drive_t *drive)
{
unsigned long long capacity, set_max;
int lba48 = idedisk_supports_lba48(drive->id);
capacity = drive->capacity64;
if (lba48)
set_max = idedisk_read_native_max_address_ext(drive);
else
set_max = idedisk_read_native_max_address(drive);
if (set_max <= capacity)
return;
printk(KERN_INFO "%s: Host Protected Area detected.\n"
"\tcurrent capacity is %llu sectors (%llu MB)\n"
"\tnative capacity is %llu sectors (%llu MB)\n",
drive->name,
capacity, sectors_to_MB(capacity),
set_max, sectors_to_MB(set_max));
// nasledovne 2 riadky pribudli v 2.6.8 a nahradil sa tym
// podmieneny preklad v starsich jadrach (CONFIG_IDEDISK_STROKE)
if (!drive->stroke)
return;
if (lba48)
set_max = idedisk_set_max_address_ext(drive, set_max);
else
set_max = idedisk_set_max_address(drive, set_max);
if (set_max) {
drive->capacity64 = set_max;
printk(KERN_INFO "%s: Host Protected Area disabled.\n",
drive->name);
}
}
-------------------------------%<-------------------------------
Jednoduchsiu odpoved mozno najst v linux-2.6.8/Documentation/ide.txt:
---------------------------------------%<---------------------------------------
"hdx=stroke" : Should you have a system w/ an AWARD Bios and your
drives are larger than 32GB and it will not boot,
one is required to perform a few OEM operations first.
The option is called "stroke" because it allows one
to "soft clip" the drive to work around a barrier
limit.
---------------------------------------%<---------------------------------------
Dakujem sam sebe za vyriesenie problemu. ;-)
rajo
--
Lubomir Host 'rajo' <rajo AT platon.sk> ICQ #: 257322664
Platon Software Development Group http://platon.sk/
GnuPG key: http://rajo.platon.sk/en/show,gpgkey
Encrypt your plaintext emails with GnuPG/PGP/OpenPGP:
http://platon.sk/cvs/cvs.php/scripts/perl/mail-gnupg/mail-gnupg-encrypt.pl
http://www.gnu.org/philosophy/no-word-attachments.html
Další informace o konferenci linux