Cache flushing and interrupted write handling in storage systems

US10235288B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10235288-B2
Application numberUS-201514874157-A
CountryUS
Kind codeB2
Filing dateOct 2, 2015
Priority dateOct 2, 2015
Publication dateMar 19, 2019
Grant dateMar 19, 2019

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Systems and techniques for cache management are disclosed that provide improved cache performance by prioritizing particular storage stripes for cache flush operations. The systems and techniques may also leverage features of the storage devices to provide atomicity without the overhead of inter-controller mirroring. In some embodiments, the systems and techniques include a storage controller that stores data in a cache. The data is associated with one or more sectors of a storage stripe that is defined over plurality of storage devices. The storage controller identifies a locality of dirty sectors of the one or more sectors, classifies the storage stripe into a category based on the locality, provides a category ordering of the category relative to at least one other category, and flushes the storage stripe from the cache to the plurality of storage devices according to the category ordering.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: storing data in a cache, by a storage controller, the data being associated with one or more sectors of a storage stripe that is defined over a plurality of storage devices; identifying a locality of dirty sectors of the one or more sectors including determining a first amount of operations to perform a partial stripe write of the dirty sectors of the storage stripe from the cache to the plurality of storage devices, and a second amount of operations to perform a full stripe write; classifying the storage stripe into a partial stripe write category in response to the first amount of operations being less than the second amount of operations; and flushing the dirty sectors from the cache to the plurality of storage devices as the partial stripe write based on the classification of the storage stripe into the partial stripe write category. 2. The method of claim 1 , wherein the identifying of the locality of the dirty sectors includes: identifying that at least one data segment of the storage stripe includes contiguous dirty sectors. 3. The method of claim 1 , wherein the identifying of the locality of the dirty sectors includes: identifying that a plurality of data segments of the storage stripe include at least one dirty sector. 4. The method of claim 1 , the method further comprising: identifying that an amount of dirty sectors in the storage stripe exceeds a predefined threshold. 5. The method of claim 1 , wherein the determining the first amount of comprises determining an amount of operations to write a data segment of the storage stripe in a segment-sized block that is aligned to a flash erase block size of a solid state drive. 6. The method of claim 1 , the method further comprising: identifying that an amount of dirty sectors in the cache exceeds a predetermined threshold. 7. A non-transitory machine readable medium having stored thereon instructions for performing a cache flushing method comprising machine executable code which when executed by at least one machine, causes the machine to: store data in a cache, the data associated with one or more sectors of a storage stripe that is defined over a plurality of storage devices; identify a locality corresponding to dirty sectors of the one or more sectors, the identifying of the locality including determining a first amount of operations to perform a partial stripe write of the dirty sectors of the storage stripe from the cache to the plurality of storage devices, and a second amount of operations to perform a full stripe write; classify the storage stripe into a partial stripe write category in response to the first amount of operations being less than the second amount of operations; and flush the cache to the plurality of storage devices as the partial stripe write based on the classification of the storage stripe into the partial stripe write category. 8. The non-transitory machine readable medium of claim 7 , wherein the identifying of the locality includes: identifying that an amount of dirty sectors exceeds a predetermined threshold. 9. The non-transitory machine readable medium of claim 7 , the identifying of the locality further comprising: identifying that each data segment of the storage stripe includes at least one dirty sector. 10. The non-transitory machine readable medium of claim 7 , wherein the determining the first amount of operations includes determining an amount of operations to write a data segment of the storage stripe in a segment-sized block that is aligned to a flash erase block size. 11. A computing device comprising: a memory containing machine readable medium comprising machine executable code having stored thereon instructions for performing a method of cache flushing; a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to: store data in a cache the data being associated with one or more sectors of a storage stripe that is defined over a plurality of storage devices; identify a locality of dirty sectors of the one or more sectors including determining a first amount of operations to perform a partial stripe write of the dirty sectors of the storage stripe from the cache to the plurality of storage devices, and a second amount of operations to perform a full stripe write; classify the storage stripe into a partial stripe write category in response to the first amount of operations being less than the second amount of operations; and flush the dirty sectors from the cache to the plurality of storage devices as the partial stripe write based on the classification of the storage stripe into the partial stripe write category. 12. The computing device of claim 11 , wherein the identifying of the locality of the dirty sectors includes: identifying that at least one data segment of the storage stripe includes contiguous dirty sectors. 13. The computing device of claim 11 , wherein the identifying of the locality of the dirty sectors includes: identifying that each data segment of the storage stripe includes at least one dirty sector. 14. The computing device of claim 11 , wherein the determining the first amount of operations includes determining an amount of operations to write a data segment of the storage stripe to a in a segment-sized block that is aligned to a flash erase block size of a solid state drive. 15. The method of claim 1 , wherein the determining the first amount of operations further comprises: determining a product of an amount of dirty sectors of the storage stripe and an amount of operations to read and write each dirty sector from the cache to the storage devices. 16. The non-transitory machine readable medium of claim 7 , wherein the determining the first amount of operations further comprises: determining a product of an amount of dirty sectors of the storage stripe and an amount of operations to read and write each dirty sector from the cache to the storage devices. 17. The computing device of claim 11 , wherein the determining the first amount of operations further comprises: determining a product of an amount of dirty sectors of the storage stripe and an amount of operations to read and write each dirty sector from the cache to the storage devices. 18. The computing device of claim 11 , the processor further configured to execute the machine executable code to cause the processor to: classify the storage stripe into a full stripe write category in response to the second amount of operations being less than the first amount of operations. 19. The computing device of claim 18 , the processor further configured to execute the machine executable code to cause the processor to: flush the storage stripe from the cache to the plurality of storage devices using the full stripe write based on the classification of the storage stripe into the full stripe write category. 20. A non-transitory machine readable medium having stored thereon instructions for performing a cache flushing method comprising machine executable code which when executed by at least one machine, causes the machine to: store data in a cache, the data associated with one or more sectors of a storage stripe that is defined over a plurality of storage devices; identify a locality corresponding to dirty sectors of the one or more sectors, the identifying of the locality including determining a first amount of operations to perform a partial stripe write of the dirty sectors of the storage stripe from

Assignees

Inventors

Classifications

  • Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title

  • with main memory updating (G06F12/0806 takes precedence) · CPC title

  • using clearing, invalidating or resetting means · CPC title

  • Details relating to cache allocation · CPC title

  • with special data handling, e.g. priority of data or instructions, handling errors or pinning · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10235288B2 cover?
Systems and techniques for cache management are disclosed that provide improved cache performance by prioritizing particular storage stripes for cache flush operations. The systems and techniques may also leverage features of the storage devices to provide atomicity without the overhead of inter-controller mirroring. In some embodiments, the systems and techniques include a storage controller t…
Who is the assignee on this patent?
Netapp Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0868. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 19 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).