2001-04-27 22:22:26

by Andries E. Brouwer

[permalink] [raw]
Subject: Re: Seagate ST340824A and (un)clipping max LBA: 2.2.19+ide04092001 patch

From: Alexander Stavitsky <[email protected]>

Disk capacity unclipping routines in ide.2.2.19.04092001.patch do not unclip
Seagate ST340824A.

I have to use the jumper on the drive to make system boot.
I tried "setmax" program and it is able to unclip the capacity,
kernel however does not.

I digged a little and I think the problem is that ST340824A does not follow
the ATA standard - it does support both READ NATIVE MAX ADDRESS
and SET MAX ADDRESS, but does not advertise support for
Host Protected Area feature set.

(maybe support is incomplete and therefore not announced?)

drive->id->command_set_1 =3D 0x306b for the this drive.

The unclipping routines compare
drive->id->command_set_1 and 0x0400 (Host Protected Feature set)

That is correct.

The earlier version of the patch compared
drive->id->command_set_1 and 0x000a (Security Mode & Power Managment ???)

When I changed it back to 0x000a, it unclipped the capacity just fine.
But 0x000a doesn't make any sense to me.

No. Maybe someone can tell us about its origin, but in your case
of course this just works because 0xa intersects 0x306b. You might
comment out this entire test.

What is the correct solution?

In the case of this particular disk the manufacturer says:
Use the Set Features command (EF) with subfunction F1.
That tells the disk to report full capacity.
(ATA-6 says that F1 is reserved for use by the Compact Flash Association)

[Could you try that and report identify output before and after?]

Also a related question: when I use "setmax", the drive reports full
capacity through "hdparm -I /dev/hd*", but kernel still uses the old info.
How does one update the kernel info after using "setmax"?

Details depend on kernel version and patches used.
There is not yet a good framework here.
(Many kernel versions will believe the partition table, even if it
extends beyond the end of the disk. That may be regarded as a bug,
but is useful in cases like this where the disk lies about its size.)


Andries


2001-04-30 15:13:16

by Alexander Stavitsky

[permalink] [raw]
Subject: Re: Seagate ST340824A and (un)clipping max LBA: 2.2.19+ide04092001 patch


On Sat, Apr 28, 2001 at 12:22:07AM +0200, [email protected] wrote:

> No. Maybe someone can tell us about its origin, but in your case
> of course this just works because 0xa intersects 0x306b. You might
> comment out this entire test.

If I comment out the entire test, it would try to unclip the capacity of all
drives. Is it safe? For my situation I would prefer to use "setmax"
or disk specific "seagate" (see later), but I do not know how to change
the kernel idea of drive geometry and capacity. I use 2.2.19 + ide patch.
Neither fdisk nor dd would not read past the clipped capacity before or after
software unclipping.

>
> In the case of this particular disk the manufacturer says:
> Use the Set Features command (EF) with subfunction F1.
> That tells the disk to report full capacity.
> (ATA-6 says that F1 is reserved for use by the Compact Flash Association)
>
> [Could you try that and report identify output before and after?]

Yes, I tried that and it does report unclipped capacity.
seagate.c is attached for reference.

stalex@eagle:~$ sudo hdparm -I /dev/hdb
/dev/hdb:

Model=TS438042 A , FwRev=.350 , SerialNo=H30E0186
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=66055248
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5
stalex@eagle:~$ sudo /usr/src/seagate /dev/hdb
Using device /dev/hdb
Sending Set Features F1 subcommand
Done.
stalex@eagle:~$ sudo hdparm -I /dev/hdb

/dev/hdb:

Model=TS438042 A , FwRev=.350 , SerialNo=H30E0186
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78165360
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5


--
= mailto:[email protected]
=== http://www.geocities.com/astavitsky
===== GPG Key 0xF7343C8B: 68DD 1E1B 2C98 D336 E31F C87B 91B9 5244 F734 3C8B
|_____Alexander Stavitsky


Attachments:
(No filename) (0.00 B)
(No filename) (232.00 B)
Download all attachments