Claims
- 1. A method for flushing write cache data, comprising:
a) receiving a storage request; b) determining whether said storage request comprises a partial hit with dirty data stored in a cache; and c) flushing, if the storage request is determined to be a partial hit, the dirty data of the write cache comprising the partial hit.
- 2. The method of claim 1, further comprising:
d) determining whether the amount of data stored in the write cache exceeds a predetermined threshold; and e) flushing, if the data stored in the write cache exceeds the predetermined threshold, dirty data stored in the write cache until the amount of data stored in the write cache no longer exceeds said predetermined threshold.
- 3. The method of claim 2, wherein the flushing is performed at a maximum transfer rate.
- 4. The method of claim 2, wherein the predetermined threshold is a predetermined percentage of the maximum capacity of the cache.
- 5. The method of claim 2, wherein the dirty data is flushed sequentially according to a logical block array list in the cache.
- 6. The method of claim 1, further comprising:
a) determining whether the amount of data stored in the write cache exceeds a predetermined threshold; and b) flushing, if the data stored in the write cache does not exceed the predetermined threshold, dirty data stored in the cache.
- 7. The method of claim 6, wherein the flushing is performed at a transfer rate that is slower than a maximum transfer rate.
- 8. The method of claim 6, wherein the dirty data is flushed sequentially according to a logical block array list in the cache.
- 9. In a system having a host computer and a mass storage device, a disk array controller comprising:
a) an input/output interface for permitting communication between the host computer, the mass storage controller, and the mass storage device; b) a write cache having a number of cache lines, some of which cache lines may include dirty data; and c) an input/output management controller, the input output management controller including
i) means for receiving a storage request; ii) means for determining whether said storage request comprises a partial hit with dirty data stored in a cache; and iii) means for flushing, if the storage request is determined to be a partial hit, the dirty data of the write cache comprising the partial hit.
- 10. The device of claim 9, further comprising:
iv) means for determining whether the amount of data stored in the write cache exceeds a predetermined threshold; and v) means for flushing, if the data stored in the write cache exceeds the predetermined threshold, dirty data stored in the write cache until the amount of data stored in the write cache no longer exceeds said predetermined threshold.
- 11. The device of claim 9, further comprising:
iv) means for determining whether the amount of data stored in the write cache exceeds a predetermined threshold; and v) means for flushing, if the data stored in the write cache does not exceed the predetermined threshold, dirty data stored in the cache.
- 12. A method for caching data, comprising:
a) determining whether a host storage request is a write or a read request; b) determining whether data of the host storage request is fully, partially or not present in a one or more write cache lines of a write cache, some of which may be dirty, the determination representing a full hit, partial hit or a miss; in response to a write request,
c) if the one or more write cache lines comprising a full hit are all marked dirty, overlaying the full-hit write cache lines dirty data with host storage request data; d) if a hit is full and one or more of the write cache lines comprising the full hit are not marked dirty, invalidating all such full hit non dirty write cache lines, writing the host storage request data to the write cache to create a new write cache line and marking that new write cache line as dirty; and e) if the host storage request data is partially present and overlapping the write cache data in one or more write cache lines and one or more of these overlapping write cache lines are marked dirty, flushing the one or more of these partial-hit dirty write cache lines to persistent data storage, invalidating any overlapping write cache lines that are not dirty, storing the host storage request data in the write cache as a new write cache line and marking that new write cache line as dirty; and in response to a read request, f) if any write cache line of a partial hit is marked dirty, flushing the partial-hit dirty write cache line(s) to a persistent data storage device and then reading the requested data from the persistent data storage device.
- 13. The method according to claim 12 further comprising, in response to a read request:
g) if a full hit, responding to the host storage request with the one or more write cache lines containing requested data without flushing the dirty write cache lines to persistent data storage.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims benefit of U.S. Provisional Patent Application No. 60/379,036 filed May 8, 2002, which is herein incorporated by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60379036 |
May 2002 |
US |