Cache bypass utilizing a binary tree

US9779026B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9779026-B2
Application numberUS-201614995740-A
CountryUS
Kind codeB2
Filing dateJan 14, 2016
Priority dateJan 14, 2016
Publication dateOct 3, 2017
Grant dateOct 3, 2017

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.

A storage command is received at a block level interface from a file system. The storage command is associated with a window of a virtual drive. One of a plurality of binary trees is selected based on the window being associated with the storage command, each of the binary trees being associated with a plurality of windows. If a data storage size of the storage command exceeds a threshold, a window identifier of the window is added to the selected binary tree to indicate the command will bypass a cache and send data of the storage command directly to main data storage.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: receiving, at a block level interface, a storage command from a file system, the storage command associated with a window of a virtual drive; selecting one of a plurality of binary trees based on the window, each of the binary trees associated with a plurality of windows; if a data storage size of the storage command exceeds a threshold, adding a window identifier of the window to the selected binary tree to indicate the command will bypass a cache and send data of the storage command directly to a main data storage; and if the data storage size does not exceed the threshold, searching for the window identifier in the selected binary tree and putting the storage command in a wait queue before sending the storage command to a caching library if the window identifier is found. 2. The method of claim 1 , wherein each of the binary trees is associated with respective one of a plurality of spin locks, and wherein adding to the binary tree or searching in the binary tree comprises holding the associated spin lock when the tree is searched and releasing the associated spin lock when the adding or the search is complete. 3. The method of claim 1 , further comprising maintaining a caching bitmap having a bit associated with each of the windows, wherein each bit is set to a predetermined value if a small storage command associated with the window is currently cached, the small storage command having a size below the threshold. 4. The method of claim 1 , wherein the adding of the window identifier to the selected binary tree comprises adding a node to the tree associated with the window if the node does not already exist. 5. The method of claim 4 , wherein if the data storage size of the command exceeds the threshold, performing a callback function upon completion of the command that deletes the node from the tree. 6. The method of claim 1 , wherein the adding of the window identifier to the selected binary tree comprises incrementing a counter to a node of the tree associated with the window if a node already exists. 7. The method of claim 6 , wherein if the data storage size of the command exceeds the threshold, performing a callback function upon completion of the command that decrements the counter. 8. The method of claim 1 , wherein the filesystem comprises a distributed filesystem having a plurality of virtual drives, each of the binary trees associated with windows from two or more of the virtual drives. 9. An apparatus comprising: an input/output bus configured to communicate with a faster storage tier configured as a cache and slower storage tier configured as a main storage; and a processor coupled to the input/output bus and configured to: receive, at a block level interface, a storage command from a file system, the storage command associated with a window of a virtual drive; select one of a plurality of binary trees based on the window, each of the binary trees associated with a plurality of windows; if a data storage size of the storage command exceeds a threshold, add a window identifier of the window to the selected binary tree to indicate the command will bypass the cache and send data of the storage command directly to the main data storage; and if the data storage size does not exceed the threshold, search for the window identifier in the selected binary tree and put the storage command in a wait queue before sending the storage command to a caching library if the window identifier is found. 10. The apparatus of claim 9 , wherein each of the binary trees is associated with respective one of a plurality of spin locks, and wherein adding to the binary tree or searching in the binary tree comprises holding the associated spin lock when the tree is searched and releasing the associated spin lock when the adding or the search is complete. 11. The apparatus of claim 9 , wherein the processor is further configured to maintain a caching bitmap having a bit associated with each of the windows, wherein each bit is set to a predetermined value if a small storage command associated with the window is currently cached, the small storage command having a size below the threshold. 12. The apparatus of claim 9 , wherein the adding of the window identifier to the selected binary tree comprises adding a node to the tree associated with the window if the node does not already exist. 13. The apparatus of claim 12 , wherein if the data storage size of the command exceeds the threshold, performing a callback function upon completion of the command that deletes the node from the tree. 14. The apparatus of claim 9 , wherein the adding of the window identifier to the selected binary tree comprises incrementing a counter to a node of the tree associated with the window if a node already exists. 15. The apparatus of claim 14 , wherein if the data storage size of the command exceeds the threshold, performing a callback function upon completion of the command that decrements the counter. 16. The apparatus of claim 9 , wherein the filesystem comprises a distributed filesystem having a plurality of virtual drives, each of the binary trees associated with windows from two or more of the virtual drives. 17. A distributed file system server, comprising: a faster storage tier configured as a cache; a slower storage tier configured as a main storage; and a processor coupled to the faster and slower tiers of storage, configured to: receive, at a block level interface, a storage command from a file system, the storage command associated with a window of a virtual drive; select one of a plurality of binary trees based on the window, each of the binary trees associated with a plurality of windows; if a data storage size of the storage command exceeds a threshold, add a window identifier of the window to the selected binary tree to indicate the command will bypass the cache and send data of the storage command directly to the main data storage; and if the data storage size does not exceed the threshold; search for the window identifier in the selected binary tree and put the storage command in a wait queue before sending the storage command to a caching library if the window identifier is found. 18. The server of claim 17 , wherein each of the binary trees is associated with respective one of a plurality of spin locks, and wherein adding to the binary tree or searching in the binary tree comprises holding the associated spin lock when the tree is searched and releasing the associated spin lock when the adding or the search is complete. 19. The server of claim 17 , wherein the filesystem comprises a Ceph filesystem. 20. The server of claim 17 , wherein the filesystem comprises a Lustre filesystem.

Assignees

Inventors

Classifications

  • Non-volatile memory · CPC title

  • Management specifically adapted to NAS (management of storage area networks [SAN] G06F3/067) · CPC title

  • using selective caching, e.g. bypass · CPC title

  • Using a specific cache allocation policy other than replacement policy · CPC title

  • Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files · 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 US9779026B2 cover?
A storage command is received at a block level interface from a file system. The storage command is associated with a window of a virtual drive. One of a plurality of binary trees is selected based on the window being associated with the storage command, each of the binary trees being associated with a plurality of windows. If a data storage size of the storage command exceeds a threshold, a wi…
Who is the assignee on this patent?
Seagate Technology Llc
What technology area does this patent fall under?
Primary CPC classification G06F12/0888. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 03 2017 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 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).