[net.bugs.4bsd] UDA50 driver and bad blocks

chris@mddc.UUCP (Chris Maloney) (05/02/84)

Can some one explain how bad blocks are(should) handled on
the UDA50 disks by the 4.2 driver?   Is the bad block handling
really done by the disk and controller?  What must the driver
do?  What does the comment in the 4.2 driver mean where
under the TODO list is listed "bad-block forwarding"?
We've been running 8 UDA based systems without any trouble
until recently.  One of these disk now gets a bad block in
the same location all the time.  I'm going to reformat and
see what happens.

Is this correct?  My on theroy.
    Once the bad block has been re-mapped the disk/controller
    ensures than when the bad block is read/written it is
    really re-mapped without the driver having to worry.
    What is missing from the 4.2 driver is the code that
    reckonizes a new bad block and requests the disk/controller
    to re-map this block.

Please respond with a follow up if you know as I'm sure
a lot of people are using these disks without knowing what
is really going on.

Thanks,

Chris Maloney
Management Decisions Development Corp.
7209 Dixie Highway
Fairfield, Ohio   45014
(513)874-6464

...{ucbvax,decvax,inhp4,mhuxi}!cbosgd!mddc!chris		(uucp)
cbosgd!mddc!chris@BERKELEY					(arpa)

tony@qtlon.UUCP (05/05/84)

<>
(This is in reply to a message asking for information/driver)
The UDA50 controller is able to forward bad blocks ONCE the forwarding
information has been set up.
The forwarding table is set up at format time and may be updated
dynamically by the device driver when a new bad block is detected.
The controller is not able to write forwarding table or select
which block is to be used as a replacement.
The following is a brief description of the method involved.

DEC SDI Standard Disk Format bad block Replacement and Caching Table (RCT)
format from the book of the same name

LBN = logical block number  RBN = replacement block number

 The RCT consists of a number of blocks containing the following:

	sector 0:	header/status information
	sector 1:	contents of replaced LBN
	sectors 2-:	replacement entries, 1 per RBN

with MSCP (eg UDA50/RA80 combination) the sequence of events for
replacing a bad block so that it will automatically be forwarded
by the controller are:

1)	update the RCT: if the replacement sector is on the same track as the
	bad one then it is a primary replacement, if it isn't it is a
	secondary replacement unless the sector header of the bad block
	is corrupt in which case it is a tertiary replacement.
2)	issue a REPLACE command to the controller. The controller tries
	to write replacement info into some part of the bad block and
	set the bad block flag. If the header is bad or this is not possible
	then it is a tertiary replacement.
3)	initialise the replacement block by issueing a WRITE command

Primary and secondary replacement blocks can be replaced directly
by the controller accessing the working parts of the bad block.
Tertiary replacement is performed by the controller reading through
the RCT

The RCT is located at the end of the physical disk.
On the RA80 drives there is one replacement block per track, but this
does not mean that only one block on a track may be replaced.

There are 4.1 and 4.2 versions of this driver which may be obtained by
sending mail to me at the address below.
A System V version is under development and will be available later this year.

____________________________________________________________

					Tony Sumpter, Quantime Ltd.

UUCP:               {decvax,cbosgd,vax135}!qusavx!qtlon!tony
                    ukc!qtlon!tony
Phone:              +44 1 637 7061