Tracking sequential ranges of non-ordered data
AssigneeWestern Digital Technologies, Inc.
InventorGlenn Alan Lott
Life of this patent
Estimating the term…
Abstract
Embodiments described herein are directed to systems and methods for ordering read sector data that has been returned from a hard disk controller out of order. For example, in typical storage systems, the firmware of the storage system and/or the host interface typically process read sectors in logical block address order. However, some of the data that is received may be received out of order. As such, the disk block hardware within the hard disk controller may accept these out of order sectors from the read channel and subsequently provide information that describes the available sectors that are in order to the firmware and/or the host interface.
Claims19
A method for reading data from a data storage device, the method comprising:
- receiving, from a media having data stored in a range of storage locations,
- a first portion of data and an associated first indicator, and
- a second portion of data and an associated second indicator,
- wherein the second indicator is non-sequential with respect to the first indicator and wherein the first indicator is equivalent to a target starting location of the range of storage locations;
- associating the first indicator with a range descriptor associated with the range of storage locations;
- associating the second indicator with an auxiliary list associated with the range of storage locations;
- receiving a third portion of data and an associated third indicator;
- upon determining that the third indicator is sequential with respect to the first indicator:
- associating the third indicator with the range descriptor associated with the range of storage locations;
- incrementing a count associated with the range of storage locations;
- and
- determining whether the second indicator is sequential with respect to the third indicator;
- and
- upon determining that the third indicator is not sequential with respect to the first indicator, associating the third indicator with the auxiliary list associated with the range of storage locations.
A data storage device, comprising:
- a read channel;
- and
- a controller configured to:
- receive a plurality of sequential data sectors and a plurality of non-sequential data sectors from the read channel, wherein each data sector has an associated indicator;
- store the sequential indicators in a list of available ordered data sectors;
- store the non-sequential indicators in a list of non-sequential data sectors;
- receive a subsequent data sector and an associated indicator from the read channel;
- and
- in response to receiving the subsequent data sector:
- determine whether the indicator of the subsequent data sector is sequential with respect to the sequential indicators in the list of available ordered data sectors;
- and
- upon determining that the indicator of the subsequent data sector is sequential with respect to the sequential indicators:
- update the list of available ordered data sectors;
- and
- determine whether one or more non-sequential indicators in the list of non-sequential data sectors is sequential with respect to the indicator of the subsequent data sector.
An apparatus comprising a processor, wherein the processor is configured to:
- receive a plurality of sequential data sectors and a plurality of non-sequential data sectors, wherein each data sector has an associated indicator;
- store the sequential indicators in a list of available ordered data sectors;
- store the non-sequential indicators in a list of non-sequential data sectors;
- receive a subsequent data sector and an associated indicator;
- and
- in response to receiving the subsequent data sector:
- determine whether the indicator of the subsequent data sector is sequential with respect to the sequential indicators in the list of available ordered data sectors;
- and
- upon determining that the indicator of the subsequent data sector is sequential with respect to the sequential indicators:
- update the list of available ordered data sectors;
- and
- determine whether one or more non-sequential indicators in the list of non-sequential data sectors is sequential with respect to the indicator of the subsequent data sector.
A method for reading data from a data storage device, the method comprising:
- receiving, from a media having data stored in a range of storage locations,
- a first portion of data and an associated first indicator, and
- a second portion of data and an associated second indicator,
- wherein the second indicator is non-sequential with respect to the first indicator and wherein the first indicator is equivalent to a target starting location of the range of storage locations;
- associating the first indicator with a range descriptor associated with the range of storage locations;
- associating the second indicator with an auxiliary list associated with the range of storage locations;
- receiving a third portion of data and an associated third indicator;
- upon determining that the third indicator is sequential with respect to the first indicator:
- associating the third indicator with the range descriptor associated with the range of storage locations;
- and
- incrementing a count associated with the range of storage locations;
- upon determining that the third indicator is not sequential with respect to the first indicator, associating the third indicator with the auxiliary list associated with the range of storage locations;
- and
- in response to receiving the third portion of data, determining whether one or more indicators associated with the auxiliary list, and different from the third indicator, are sequential with respect to an indicator associated with the range descriptor.
A data storage device, comprising:
- a read channel;
- and
- a controller configured to:
- receive a plurality of sequential data sectors and a plurality of non-sequential data sectors from the read channel, wherein each data sector has an associated indicator;
- store the sequential indicators in a list of available ordered data sectors;
- store the non-sequential indicators in a list of non-sequential data sectors;
- receive a subsequent data sector and an associated indicator from the read channel;
- and
- in response to receiving the subsequent data sector:
- determine whether the indicator of the subsequent data sector is sequential with respect to the sequential indicators in the list of available ordered data sectors;
- upon determining that the indicator of the subsequent data sector is sequential with respect to the sequential indicators, update the list of available ordered data sectors;
- and
- determine whether one or more non-sequential indicators in the list of non-sequential data sectors, and different from the indicator of the subsequent data sector, are sequential with respect to an indicator in the list of available ordered data sectors.
An apparatus comprising a processor, wherein the processor is configured to:
- receive a plurality of sequential data sectors and a plurality of non-sequential data sectors, wherein each data sector has an associated indicator;
- store the sequential indicators in a list of available ordered data sectors;
- store the non-sequential indicators in a list of non-sequential data sectors;
- receive a subsequent data sector and an associated indicator;
- and
- in response to receiving the subsequent data sector:
- determine whether the indicator of the subsequent data sector is sequential with respect to the sequential indicators in the list of available ordered data sectors;
- upon determining that the indicator of the subsequent data sector is sequential with respect to the sequential indicators, update the list of available ordered data sectors;
- and
- determine whether one or more non-sequential indicators in the list of non-sequential data sectors, and different from the indicator of the subsequent data sector, are sequential with respect to an indicator in the list of available ordered data sectors.
Dependencies are inferred from the claim text.