Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Restoring Unreadable Sector ID Fields

IP.com Disclosure Number: IPCOM000102311D
Original Publication Date: 1990-Nov-01
Included in the Prior Art Database: 2005-Mar-17
Document File: 5 page(s) / 168K

Publishing Venue

IBM

Related People

Apperley, N: AUTHOR [+3]

Abstract

This article describes a general error recovery solution to reading data blocks from a disk file without being able to read their id fields due to surface defects or other errors.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 38% of the total text.

Restoring Unreadable Sector ID Fields

       This article describes a general error recovery solution
to reading data blocks from a disk file without being able to read
their id fields due to surface defects or other errors.

      The algorithm copes with ids which are unreadable, and it is
sufficiently general to deal with many rather than just one
unreadable id.  A single pass (disk revolution) through the list of
ids is all that is required for most cases.  No numbering of spares
or defective sectors is required.  It can be used during a reassign
blocks operation as well as during read recovery.  It is a
self-contained routine which operates only on data in memory,
allowing writing and testing to be performed in isolation.  Several
error cases are 'grouped' together for the same route through the
code;  only a few special cases are required.  Track format errors
are conveniently detected in this same routine.

      A Disk File controller supports up to four serial DASDs, each
DASD consisting of a stack of 12 disks with 20 read/write surfaces.
Each surface contains 1458 read/write tracks and each track contains
58 sectors of 512 or 520 bytes.  A group of 20 tracks at the same
'radius' is referred to as a cylinder.  On a cylinder there are 20*58
(i.e., 1160) sectors available, of which 11 are used as spares and
1149 are used for read/write data.  In front of each sector there is
an associated 'id' field to locate the data in each sector.  The id
format consists of six bytes plus two bytes of CRC.

      Logical Block Address (LBA).(Bytes 0-21):
           -    '000000'X-'FBFFFF'X      Data sectors
           -    'FE0000'X-'FEFFFF'X      Spare sectors
           -    'FF0000'X-'FFFFFF'X      Defective sectors
           -    'FC0000'X-'FDFFFF'X      Reserved area usage.
Sector.(Byte 3) Physical position from index mark.
Offset.(Byte 4) Number of valid LBAs remaining on this track
(inclusive)
Cylinder LSB.(Byte 5) LS byte of cyl.addr.(checks head posn.)
CRC.(Next two bytes) Two bytes to check validity of the id.

      Should a defect appear in the id field on the disk, then there
is a high probability that the data for that sector is still
readable; however, it must be addressed physically instead of
logically (i.e., the read must be addressed to a physical position
relative to the index mark instead of using the LBA within the id
field).

      The function of the disclosed algorithm is to determine the
physical address of the unreadable id field.  The algorithm 'deduces'
any unreadable ids from a track's worth of ids.  The algorithm is
written in such a way that if there are sufficient ids which are
readable, it will fill in those that are not.  If there is
insufficient information in the track's worth of ids, then it fills
in as many as possible but will indicate an 'ambiguous' return code
to its caller.  The following exampl...