A method is disclosed for ordering error recovery steps of an error
recovery procedure executed by a disk drive, wherein each error recovery
step having an execution time. The disk drive comprises a disk having a
plurality of tracks, wherein each track comprises a plurality of data
sectors. A plurality of step success counters are initialized, wherein
each counter corresponds to one of the error recovery steps. A plurality
of the error recovery steps are executed, wherein if an error recovery
step successfully recovers one of the data sectors the corresponding step
success counter is incremented. A step priority value is computed for
each error recovery step in response to the step success counter and
execution time for each step. The error recovery steps are then ordered
in response to the step priority values.