IP Library › Granted Patent US 12,292,853
Granted Patent B1
US 12,292,853 · App. 18/503,082 · Granted May 6, 2025

Object-based storage with garbage collection and data consolidation

Inventors: Graham Edwin Ellis (Seattle, WA); Ying Fairweather (Sammamish, WA); Thorne Davis Garvin (Spokane, WA); Steven Henry Haber (Seattle, WA); Yuxi Bai (Seattle, WA); Michael Anthony Chmiel (Seattle, WA); Pathirat Kosakanchit (Seattle, WA); Jonathan Michael MacLaren (Seattle, WA); Matthew Christopher McMullan (Bellevue, WA); Tyler Morrison Moody (Seattle, WA); Aaron James Passey (San Rafael, CA); Rowan Arthur Phipps (Seattle, WA); Thomas Gregory Rothschilds (Seattle, WA)
Assignee: Qumulo, Inc.
G06F16/122G06F12/0253G06F2212/702
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,292,853
App. No.
18/503,082
Filed
Nov 6, 2023
Granted
May 6, 2025
Kind
B1
Art Unit
2152
USPC
707/696
Abstract

Embodiments are directed to a file system that include object stores. An object store for write requests may be provided. Write ahead log (WAL) entries that include data blocks may be generated. A WAL object may be generated based on the WAL entries and stored in the object store. An in-memory overlay may be updated to associate the data blocks with the WAL object. A checkpoint operation may be executed to: generate an index object that includes index entries that associate other data blocks with data objects stored in the object store; update the index object to include index entries that associate the data blocks with the WAL object; store the updated index object in the object store; update the in-memory overlay to remove the association of the data blocks and the WAL object and update the in memory WAL to remove records of successfully checkpointed WAL objects.

Claims (181)

1. A method for managing data in a file system over a network using one or more processors to execute instructions that are configured to cause performance of actions, comprising:

determining an object store for one or more write requests provided by a file system client based on the file system, wherein each write request includes one or more data blocks associated with a write transaction;

generating one or more write ahead log (WAL) entries that include the one or more data blocks, wherein one or more of a rule, instruction or a library is employed to determine one or more types of index data structures selected from a plurality of types of data structures for efficiently including the one or more data blocks with a WAL entry;

generating a WAL object based on the one or more WAL entries;

storing the WAL object in the object store;

updating an in-memory overlay with the one or more types of determined index data structures to associate the one or more data blocks with the WAL object;

deleting each WAL object in the object store that is unassociated with one or more data blocks and deleting each non-referenced data object in the object store; and

employing a threshold for a number of WAL objects stored in the object store to initiate a checkpoint operation that performs further actions, including:

generating an index object that includes one or more index entries that associate one or more other data blocks with one or more data objects stored in the object store;

updating the index object to include one or more index entries that associate the one or more data blocks with the WAL object;

storing the updated index object in the object store, wherein the WAL object is converted to a data object based on the WAL object being referenced in the updated index object;

updating the in-memory overlay to remove the association of the one or more data blocks and the WAL object; and

initiating garbage collection for one or more data objects stored in the object store based on one or more additional financial costs charged by a cloud computing provider of an application programming interface (API) for the file system due to one or more of an amount of stored data objects being above a predetermined amount for the object store or a total amount of data objects.

2. The method of claim 1 , further comprising:

invalidating a portion of a page cache that includes a copy of the one or more data blocks.

3. The method of claim 1 , further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory index to determine a data object in the object store that includes the one or more read data blocks;

loading the determined data object from the object store;

determining the one or more read data blocks in the loaded data object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

4. The method of claim 1 , further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory overlay to determine a WAL object in the object store that includes the one or more read data blocks;

loading the determined WAL object from the object store;

determining the one or more read data blocks in the loaded WAL object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

5. The method of claim 1 , further comprising:

determining an amount of waste data stored in the object store based on one or more metrics;

initiating the garbage collection operation based on one or more of the amount of waste data and a cost to store the waste space in the object store exceeding another cost of executing the garbage collection operation;

determining one or more fragmented data objects in the object store that include the waste data based on one or more reference counters;

generating zero or more consolidated data objects that exclude the waste data based on the one or more fragmented data objects;

storing the zero or more consolidated data objects in the object store; and

updating the overlay to include zero or more references to the zero or more consolidated data objects, or performing additional actions, including:

loading a current index object from the object store;

generating a modified index object based on the current index object and the zero or more consolidated data objects, wherein the modified index object is stored in the object store; and

removing the one or more fragmented data objects and the current index object from the object store.

6. The method of claim 1 , wherein the one or more data objects further comprise:

an index block in each data object that references a location of each data block included in the one or more data objects, wherein the index block is located at the beginning of the one or more data objects.

7. The method of claim 1 , wherein executing a checkpoint operation, further comprises:

determining one or more globally committed WAL objects that correspond to one or more committed write transactions;

determining one or more locally committed WAL objects that are associated with one or more uncommitted write transactions; and

excluding the one or more locally committed WAL objects from the checkpoint operation.

8. A system for managing data in a file system comprising:

a network computer, comprising:

a memory that stores at least instructions; and

one or more processors that execute instructions that are configured to cause performance of actions, including:

determining an object store for one or more write requests provided by a file system client based on the file system, wherein each write request includes one or more data blocks associated with a write transaction;

generating one or more write ahead log (WAL) entries that include the one or more data blocks, wherein one or more of a rule, instruction or a library is employed to determine one or more types of index data structures selected from a plurality of types of data structures for efficiently including the one or more data blocks with a WAL entry;

generating a WAL object based on the one or more WAL entries;

storing the WAL object in the object store;

updating an in-memory overlay with the one or more types of determined index data structures to associate the one or more data blocks with the WAL object;

deleting each WAL object in the object store that is unassociated with one or more data blocks and deleting each non-referenced data object in the object store; and

employing a threshold for a number of WAL objects stored in the object store to initiate a checkpoint operation that performs further actions, including:

generating an index object that includes one or more index entries that associate one or more other data blocks with one or more data objects stored in the object store;

updating the index object to include one or more index entries that associate the one or more data blocks with the WAL object;

storing the updated index object in the object store, wherein the WAL object is converted to a data object based on the WAL object being referenced in the updated index object; and

updating the in-memory overlay to remove the association of the one or more data blocks and the WAL object; and

initiating garbage collection for one or more data objects stored in the object store based on one or more additional financial costs charged by a cloud computing provider of an application programming interface (API) for the file system due to one or more of an amount of stored data objects being above a predetermined amount for the object store or a total amount of data objects; and

one or more client computers, comprising:

a memory that stores at least instructions; and

one or more processors that execute instructions that are configured to cause performance of other actions, including:

providing the one or more write requests to the file system.

9. The system of claim 8 , wherein the one or more network computer processors execute instructions that are configured to cause performance of actions, further comprising:

invalidating a portion of a page cache that includes a copy of the one or more data blocks.

10. The system of claim 8 , wherein the one or more network computer processors execute instructions that are configured to cause performance of actions, further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory index to determine a data object in the object store that includes the one or more read data blocks;

loading the determined data object from the object store;

determining the one or more read data blocks in the loaded data object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

11. The system of claim 8 , wherein the one or more network computer processors execute instructions that are configured to cause performance of actions, further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory overlay to determine a WAL object in the object store that includes the one or more read data blocks;

loading the determined WAL object from the object store;

determining the one or more read data blocks in the loaded WAL object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

12. The system of claim 8 , wherein the one or more network computer processors execute instructions that are configured to cause performance of actions, further comprising:

determining an amount of waste data stored in the object store based on one or more metrics;

initiating a garbage collection operation based on one or more of the amount of waste data and a cost to store the waste space in the object store exceeding another cost of executing the garbage collection operation;

determining one or more fragmented data objects in the object store that include the waste data based on one or more reference counters;

generating zero or more consolidated data objects that exclude the waste data based on the one or more fragmented data objects;

storing the zero or more consolidated data objects in the object store; and

updating the overlay to include zero or more references to the zero or more consolidated data objects, or performing additional actions, including:

loading a current index object from the object store;

generating a modified index object based on the current index object and the zero or more consolidated data objects, wherein the modified index object is stored in the object store; and

removing the one or more fragmented data objects and the current index object from the object store.

13. The system of claim 8 , wherein the one or more data objects further comprise:

an index block in each data object that references a location of each data block included in the one or more data objects, wherein the index block is located at the beginning of the one or more data objects.

14. The system of claim 8 , wherein executing a checkpoint operation, further comprises:

determining one or more globally committed WAL objects that correspond to one or more committed write transactions;

determining one or more locally committed WAL objects that are associated with one or more uncommitted write transactions; and

excluding the one or more locally committed WAL objects from the checkpoint operation.

15. A processor readable non-transitory storage media that includes instructions for managing data in a file system over a network, wherein execution of the instructions by one or more processors on one or more network computers performs actions, comprising:

determining an object store for one or more write requests provided by a file system client based on the file system, wherein each write request includes one or more data blocks associated with a write transaction;

generating one or more write ahead log (WAL) entries that include the one or more data blocks, wherein one or more of a rule, instruction or a library is employed to determine one or more types of index data structures selected from a plurality of types of data structures for efficiently including the one or more data blocks with a WAL entry;

generating a WAL object based on the one or more WAL entries;

storing the WAL object in the object store;

updating an in-memory overlay with the one or more types of determined index data structures to associate the one or more data blocks with the WAL object;

deleting each WAL object in the object store that is unassociated with one or more data blocks and deleting each non-referenced data object in the object store; and

employing a threshold for a number of WAL objects stored in the object store to initiate a checkpoint operation that performs further actions, including:

generating an index object that includes one or more index entries that associate one or more other data blocks with one or more data objects stored in the object store;

updating the index object to include one or more index entries that associate the one or more data blocks with the WAL object;

storing the updated index object in the object store, wherein the WAL object is converted to a data object based on the WAL object being referenced in the updated index object; and

updating the in-memory overlay to remove the association of the one or more data blocks and the WAL object; and

initiating garbage collection for one or more data objects stored in the object store based on one or more additional financial costs charged by a cloud computing provider of an application programming interface (API) for the file system due to one or more of an amount of stored data objects being above a predetermined amount for the object store or a total amount of data objects.

16. The media of claim 15 , further comprising:

invalidating a portion of a page cache that includes a copy of the one or more data blocks.

17. The media of claim 15 , further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory index to determine a data object in the object store that includes the one or more read data blocks;

loading the determined data object from the object store;

determining the one or more read data blocks in the loaded data object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

18. The media of claim 15 , further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory overlay to determine a WAL object in the object store that includes the one or more read data blocks;

loading the determined WAL object from the object store;

determining the one or more read data blocks in the loaded WAL object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

19. The media of claim 15 , further comprising:

determining one or more of an amount of waste data stored in the object store based on one or more metrics;

initiating a garbage collection operation based on one or more of the amount of waste data and a cost to store the waste space in the object store exceeding another cost of executing the garbage collection operation;

determining one or more fragmented data objects in the object store that include the waste data based on one or more reference counters;

generating zero or more consolidated data objects that exclude the waste data based on the one or more fragmented data objects;

storing the zero or more consolidated data objects in the object store; and

updating the overlay to include zero or more references to the zero or more consolidated data objects, or performing additional actions, including:

loading a current index object from the object store;

generating a modified index object based on the current index object and the zero or more consolidated data objects, wherein the modified index object is stored in the object store; and

removing the one or more fragmented data objects and the current index object from the object store.

20. The media of claim 15 , wherein the one or more data objects further comprise:

an index block in each data object that references a location of each data block included in the one or more data objects, wherein the index block is located at the beginning of the one or more data objects.

21. The media of claim 15 , wherein executing a checkpoint operation, further comprises:

determining one or more globally committed WAL objects that correspond to one or more committed write transactions;

determining one or more locally committed WAL objects that are associated with one or more uncommitted write transactions; and

excluding the one or more locally committed WAL objects from the checkpoint operation.

22. A network computer for managing data in a file system, comprising:

a memory that stores at least instructions; and

one or more processors that execute instructions that are configured to cause performance of actions, including:

determining an object store for one or more write requests provided by a file system client based on the file system, wherein each write request includes one or more data blocks associated with a write transaction;

generating one or more write ahead log (WAL) entries that include the one or more data blocks, wherein one or more of a rule, instruction or a library is employed to determine one or more types of index data structures selected from a plurality of types of data structures for efficiently including the one or more data blocks with a WAL entry;

generating a WAL object based on the one or more WAL entries;

storing the WAL object in the object store;

updating an in-memory overlay with the one or more types of determined index data structures to associate the one or more data blocks with the WAL object;

deleting each WAL object in the object store that is unassociated with one or more data blocks and deleting each non-referenced data object in the object store; and

employing a threshold for a number of WAL objects stored in the object store to initiate a checkpoint operation that performs further actions, including:

generating an index object that includes one or more index entries that associate one or more other data blocks with one or more data objects stored in the object store;

updating the index object to include one or more index entries that associate the one or more data blocks with the WAL object;

storing the updated index object in the object store, wherein the WAL object is converted to a data object based on the WAL object being referenced in the updated index object; and

updating the in-memory overlay to remove the association of the one or more data blocks and the WAL object; and

initiating garbage collection for one or more data objects stored in the object store based on one or more additional financial costs charged by a cloud computing provider of an application programming interface (API) for the file system due to one or more of an amount of stored data objects being above a predetermined amount for the object store or a total amount of data objects.

23. The network computer of claim 22 , wherein the one or more processors execute instructions that are configured to cause performance of actions, further comprising:

invalidating a portion of a page cache that includes a copy of the one or more data blocks.

24. The network computer of claim 22 , wherein the one or more processors execute instructions that are configured to cause performance of actions, further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory index to determine a data object in the object store that includes the one or more read data blocks;

loading the determined data object from the object store;

determining the one or more read data blocks in the loaded data object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

25. The network computer of claim 22 , wherein the one or more processors execute instructions that are configured to cause performance of actions, further comprising:

determining the object store for one or more read requests provided by the file system client based on the file system, wherein each read request includes address information for one or more read data blocks associated with a read transaction;

employing the in-memory overlay to determine a WAL object in the object store that includes the one or more read data blocks;

loading the determined WAL object from the object store;

determining the one or more read data blocks in the loaded WAL object based on the address information; and

sending a response to the file system client that includes a copy of the one or more read data blocks.

26. The network computer of claim 22 , wherein the one or more processors execute instructions that are configured to cause performance of actions, further comprising:

determining an amount of waste data stored in the object store based on one or more metrics;

initiating a garbage collection operation based on one or more of the amount of waste data and a cost to store the waste space in the object store exceeding another cost of executing the garbage collection operation;

determining one or more fragmented data objects in the object store that include the waste data based on one or more reference counters;

generating zero or more consolidated data objects that exclude the waste data based on the one or more fragmented data objects;

storing the zero or more consolidated data objects in the object store; and

updating the overlay to include zero or more references to the zero or more consolidated data objects, or performing additional actions, including:

loading a current index object from the object store;

generating a modified index object based on the current index object and the zero or more consolidated data objects, wherein the modified index object is stored in the object store; and

removing the one or more fragmented data objects and the current index object from the object store.

27. The network computer of claim 22 , wherein the one or more data objects further comprise:

an index block in each data object that references a location of each data block included in the one or more data objects, wherein the index block is located at the beginning of the one or more data objects.

28. The network computer of claim 22 , wherein executing a checkpoint operation, further comprises:

determining one or more globally committed WAL objects that correspond to one or more committed write transactions;

determining one or more locally committed WAL objects that are associated with one or more uncommitted write transactions; and

excluding the one or more locally committed WAL objects from the checkpoint operation.

Assignments (2)
SECURITY INTEREST Recorded Jul 17, 2025
From: QUMULO, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 071748/0322 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2023
From: ELLIS, GRAHAM EDWIN; FAIRWEATHER, YING; GARVIN, THORNE DAVIS; HABER, STEVEN HENRY; BAI, YUXI; CHMIEL, MICHAEL ANTHONY; KOSAKANCHIT, PATHIRAT; MACLAREN, JONATHAN MICHAEL; MCMULLAN, MATTHEW CHRISTOPHER; MOODY, TYLER MORRISON; PASSEY, AARON JAMES; PHIPPS, ROWAN ARTHUR; ROTHSCHILDS, THOMAS GREGORY
To: QUMULO, INC.
Reel/Frame 065704/0939 →
References Cited (400)
US 5165031A · Pruul et al. · 1992 [cited by applicant]
US 5283875A · Gibson et al. · 1994 [cited by applicant]
US 5319773A · Britton et al. · 1994 [cited by applicant]
US 5410684A · Ainsworth et al. · 1995 [cited by applicant]
US 5410719A · Shackleford · 1995 [cited by applicant]
US 5442561A · Yoshizawa et al. · 1995 [cited by applicant]
US 5953719A · Kleewein et al. · 1999 [cited by applicant]
US 6049809A · Raman et al. · 2000 [cited by applicant]
US 6236996B1 · Bapat et al. · 2001 [cited by applicant]
US 6385641B1 · Jiang et al. · 2002 [cited by applicant]
US 6415283B1 · Conklin · 2002 [cited by applicant]
US 6496944B1 · Hsiao et al. · 2002 [cited by applicant]
US 6529998B1 · Yochai et al. · 2003 [cited by applicant]
US 6560615B1 · Zayas et al. · 2003 [cited by applicant]
US 6772435B1 · Thexton et al. · 2004 [cited by applicant]
US 6874130B1 · Baweja et al. · 2005 [cited by applicant]
US 6892211B2 · Hitz et al. · 2005 [cited by applicant]
US 6965903B1 · Agarwal et al. · 2005 [cited by applicant]
US 6965936B1 · Wipfel et al. · 2005 [cited by applicant]
US 7072911B1 · Doman et al. · 2006 [cited by applicant]
US 7165158B1 · Yagawa · 2007 [cited by applicant]
US 7213040B1 · Stokes et al. · 2007 [cited by applicant]
US 7330948B2 · Deguchi et al. · 2008 [cited by applicant]
US 7467333B2 · Keeton et al. · 2008 [cited by applicant]
US 7594138B2 · Abdulvahid · 2009 [cited by applicant]
US 7636743B2 · Erofeev · 2009 [cited by applicant]
US 7693876B2 · Hackworth et al. · 2010 [cited by applicant]
US 7757056B1 · Fair · 2010 [cited by applicant]
US 7761456B1 · Cram et al. · 2010 [cited by applicant]
US 7844580B2 · Srivastava et al. · 2010 [cited by applicant]
US 7933870B1 · Webster · 2011 [cited by applicant]
US 7937421B2 · Mikesell et al. · 2011 [cited by applicant]
US 7956293B2 · Echigo et al. · 2011 [cited by applicant]
US 7958304B1 · Goel et al. · 2011 [cited by applicant]
US 7962709B2 · Agrawal · 2011 [cited by applicant]
US 7966293B1 · Owara et al. · 2011 [cited by applicant]
US 8027827B2 · Bitar et al. · 2011 [cited by applicant]
US 8046378B1 · Zhuge et al. · 2011 [cited by applicant]
US 8108429B2 · Sim-Tang et al. · 2012 [cited by applicant]
US 8296312B1 · Leung et al. · 2012 [cited by applicant]
US 8341540B1 · Haynes et al. · 2012 [cited by applicant]
US 8355407B2 · Wookey et al. · 2013 [cited by applicant]
US 8364648B1 · Sim-Tang · 2013 [cited by examiner]
US 8423733B1 · Ozdemir · 2013 [cited by applicant]
US 8423821B1 · Keith, Jr. · 2013 [cited by applicant]
US 8448170B2 · Wipfel et al. · 2013 [cited by applicant]
US 8463825B1 · Harty et al. · 2013 [cited by applicant]
US 8489656B2 · Erofeev · 2013 [cited by applicant]
US 8504733B1 · Iyer et al. · 2013 [cited by applicant]
US 8515911B1 · Zhou et al. · 2013 [cited by applicant]
US 8612404B2 · Bone et al. · 2013 [cited by applicant]
US 8612488B1 · Subramanya et al. · 2013 [cited by applicant]
US 8645323B2 · Jackiewicz et al. · 2014 [cited by applicant]
US 8661447B1 · Olliff et al. · 2014 [cited by applicant]
US 8725691B1 · Natanzon · 2014 [cited by applicant]
US 8776050B2 · Plouffe et al. · 2014 [cited by applicant]
US 8782655B2 · Blanding et al. · 2014 [cited by applicant]
US 8805786B1 · Natanzon · 2014 [cited by applicant]
US 8806154B1 · Gupta et al. · 2014 [cited by applicant]
US 8838887B1 · Burke et al. · 2014 [cited by applicant]
US 8838931B1 · Marshak et al. · 2014 [cited by applicant]
US 8849754B2 · Craggs · 2014 [cited by applicant]
US 8849764B1 · Long et al. · 2014 [cited by applicant]
US 8849809B1 · Seshadri · 2014 [cited by applicant]
US 8868797B1 · Kirac et al. · 2014 [cited by applicant]
US 8924364B1 · Zhong et al. · 2014 [cited by applicant]
US 8972694B1 · Dolan et al. · 2015 [cited by applicant]
US 9015214B2 · Nishida et al. · 2015 [cited by applicant]
US 9026765B1 · Marshak et al. · 2015 [cited by applicant]
US 9031994B1 · Cao et al. · 2015 [cited by applicant]
US 9032170B2 · Vaghani et al. · 2015 [cited by applicant]
US 9047017B1 · Dolan et al. · 2015 [cited by applicant]
US 9141633B1 · Li et al. · 2015 [cited by applicant]
US 9143379B1 · Berger et al. · 2015 [cited by applicant]
US 9158653B2 · Gold · 2015 [cited by applicant]
US 9171145B2 · Dash et al. · 2015 [cited by applicant]
US 9244975B2 · Das et al. · 2016 [cited by applicant]
US 9244976B1 · Zhang et al. · 2016 [cited by applicant]
US 9361187B2 · Jarvis · 2016 [cited by applicant]
US 9384252B2 · Akirav et al. · 2016 [cited by applicant]
US 9396202B1 · Drobychev · 2016 [cited by examiner]
US 9459804B1 · Natanzon et al. · 2016 [cited by applicant]
US 9501487B1 · Yuan et al. · 2016 [cited by applicant]
US 9519664B1 · Kharatishvili · 2016 [cited by examiner]
US 9547560B1 · Lee · 2017 [cited by applicant]
US 9600193B2 · Ahrens et al. · 2017 [cited by applicant]
US 9613120B1 · Kharatishvili · 2017 [cited by examiner]
US 9727432B1 · Cutforth et al. · 2017 [cited by applicant]
US 9747171B2 · Beeken et al. · 2017 [cited by applicant]
US 9753782B2 · Fang et al. · 2017 [cited by applicant]
US 9753932B1 · Brow et al. · 2017 [cited by applicant]
US 9753987B1 · Dolan et al. · 2017 [cited by applicant]
US 9785377B2 · Shin et al. · 2017 [cited by applicant]
US 9836480B2 · Okun et al. · 2017 [cited by applicant]
US 9846698B1 · Panidis et al. · 2017 [cited by applicant]
US 10073856B1 · Cooper et al. · 2018 [cited by applicant]
US 10095708B2 · Passey et al. · 2018 [cited by applicant]
US 10095709B2 · Okun et al. · 2018 [cited by applicant]
US 10095729B2 · Taron et al. · 2018 [cited by applicant]
US 10140185B1 · Lopez et al. · 2018 [cited by applicant]
US 10162980B1 · Bernotavicius et al. · 2018 [cited by applicant]
US 10261868B2 · Brown et al. · 2019 [cited by applicant]
US 10275493B1 · Mostak · 2019 [cited by applicant]
US 10303561B2 · Beeken et al. · 2019 [cited by applicant]
US 10318401B2 · Rothschilds et al. · 2019 [cited by applicant]
US 10318494B2 · Krasnow et al. · 2019 [cited by applicant]
US 10339101B1 · Gupta · 2019 [cited by applicant]
US 10346355B2 · Godman · 2019 [cited by applicant]
US 10387810B1 · Kalush et al. · 2019 [cited by applicant]
US 10409784B1 · Krasnow et al. · 2019 [cited by applicant]
US 10423609B1 · Strauss · 2019 [cited by applicant]
US 10437509B1 · Alexeev et al. · 2019 [cited by applicant]
US 10447779B2 · Dieterich et al. · 2019 [cited by applicant]
US 10459884B1 · Godman · 2019 [cited by applicant]
US 10459892B2 · Godman et al. · 2019 [cited by applicant]
US 10460122B1 · Kirby et al. · 2019 [cited by applicant]
US 10474635B1 · Unger et al. · 2019 [cited by applicant]
US 10534758B1 · Carpenter et al. · 2020 [cited by applicant]
US 10540662B2 · Barlett et al. · 2020 [cited by applicant]
US 10545986B2 · Tappan et al. · 2020 [cited by applicant]
US 10552373B2 · Brow et al. · 2020 [cited by applicant]
US 10606812B2 · Cooper et al. · 2020 [cited by applicant]
US 10614033B1 · Rothschilds et al. · 2020 [cited by applicant]
US 10614241B1 · Kirby et al. · 2020 [cited by applicant]
US 10621057B2 · Tripathi et al. · 2020 [cited by applicant]
US 10621147B1 · Liang et al. · 2020 [cited by applicant]
US 10664408B1 · Chatterjee et al. · 2020 [cited by applicant]
US 10678663B1 · Sharma et al. · 2020 [cited by applicant]
US 10678671B2 · Rothschilds et al. · 2020 [cited by applicant]
US 10725977B1 · Chmiel et al. · 2020 [cited by applicant]
US 10795796B1 · Bai et al. · 2020 [cited by applicant]
US 10860372B1 · Bai et al. · 2020 [cited by applicant]
US 10860414B1 · Urban et al. · 2020 [cited by applicant]
US 10860546B2 · Ye et al. · 2020 [cited by applicant]
US 10860547B2 · Passey et al. · 2020 [cited by applicant]
US 10877942B2 · Okun et al. · 2020 [cited by applicant]
US 10936538B1 · Unger et al. · 2021 [cited by applicant]
US 10936551B1 · Unger et al. · 2021 [cited by applicant]
US 11023535B1 · Greenwood et al. · 2021 [cited by applicant]
US 11132126B1 · Chmiel et al. · 2021 [cited by applicant]
US 11132336B2 · Passey et al. · 2021 [cited by applicant]
US 11150823B2 · Gao et al. · 2021 [cited by applicant]
US 11151001B2 · Su et al. · 2021 [cited by applicant]
US 11151092B2 · Chmiel et al. · 2021 [cited by applicant]
US 11157458B1 · Carter et al. · 2021 [cited by applicant]
US 11249907B1 · Brewer · 2022 [cited by applicant]
US 11256682B2 · Taron et al. · 2022 [cited by applicant]
US 11265262B1 · Makie et al. · 2022 [cited by applicant]
US 11294604B1 · McMullan et al. · 2022 [cited by applicant]
US 11294718B2 · Bai et al. · 2022 [cited by applicant]
US 11347699B2 · Carpenter et al. · 2022 [cited by applicant]
US 11354273B1 · O'Neill et al. · 2022 [cited by applicant]
US 11360936B2 · Haber et al. · 2022 [cited by applicant]
US 11372735B2 · Su et al. · 2022 [cited by applicant]
US 11372819B1 · Carter et al. · 2022 [cited by applicant]
US 11435901B1 · Chmiel et al. · 2022 [cited by applicant]
US 11461241B2 · Carpenter et al. · 2022 [cited by applicant]
US 11461286B2 · Godman et al. · 2022 [cited by applicant]
US 11567660B2 · Chmiel et al. · 2023 [cited by applicant]
US 11599508B1 · Harward et al. · 2023 [cited by applicant]
US 11630832B2 · Choi et al. · 2023 [cited by applicant]
US 11669255B2 · Hansen et al. · 2023 [cited by applicant]
US 11722150B1 · Fachan et al. · 2023 [cited by applicant]
US 11729269B1 · Meernik et al. · 2023 [cited by applicant]
US 11734147B2 · Bai et al. · 2023 [cited by applicant]
US 11775481B2 · Unger et al. · 2023 [cited by applicant]
US 11921677B1 · Kirby et al. · 2024 [cited by applicant]
US 11934660B1 · McMullan et al. · 2024 [cited by applicant]
US 11966592B1 · Bai · 2024 [cited by applicant]
US 12019875B1 · McMullan et al. · 2024 [cited by applicant]
US 12038877B1 · Kirby et al. · 2024 [cited by applicant]
US 20010039622A1 · Hitz et al. · 2001 [cited by applicant]
US 20020059439A1 · Arroyo et al. · 2002 [cited by applicant]
US 20020065835A1 · Fujisaki · 2002 [cited by applicant]
US 20020083073A1 · Vaidya et al. · 2002 [cited by applicant]
US 20020099691A1 · Lore et al. · 2002 [cited by applicant]
US 20020178271A1 · Graham et al. · 2002 [cited by applicant]
US 20030033308A1 · Patel et al. · 2003 [cited by applicant]
US 20030145009A1 · Forman et al. · 2003 [cited by applicant]
US 20030177379A1 · Hori et al. · 2003 [cited by applicant]
US 20030182313A1 · Federwisch et al. · 2003 [cited by applicant]
US 20040030727A1 · Armangau et al. · 2004 [cited by applicant]
US 20040093474A1 · Lin et al. · 2004 [cited by applicant]
US 20040098425A1 · Wiss et al. · 2004 [cited by applicant]
US 20040153479A1 · Mikesell et al. · 2004 [cited by applicant]
US 20040255048A1 · Lev Ran et al. · 2004 [cited by applicant]
US 20050015674A1 · Haugh · 2005 [cited by applicant]
US 20050027748A1 · Kisley · 2005 [cited by applicant]
US 20050065986A1 · Bixby et al. · 2005 [cited by applicant]
US 20050091663A1 · Bagsby · 2005 [cited by applicant]
US 20050114593A1 · Cassell et al. · 2005 [cited by applicant]
US 20050114726A1 · Ouchi · 2005 [cited by applicant]
US 20050119996A1 · Ohata et al. · 2005 [cited by applicant]
US 20050154866A1 · Steely, Jr. et al. · 2005 [cited by applicant]
US 20050182992A1 · Land et al. · 2005 [cited by applicant]
US 20050187992A1 · Prahlad et al. · 2005 [cited by applicant]
US 20050195660A1 · Kavuri et al. · 2005 [cited by applicant]
US 20050223019A1 · Das et al. · 2005 [cited by applicant]
US 20060004890A1 · Semple et al. · 2006 [cited by applicant]
US 20060053139A1 · Marzinski et al. · 2006 [cited by applicant]
US 20060089982A1 · Abbott et al. · 2006 [cited by applicant]
US 20060090036A1 · Zohar et al. · 2006 [cited by applicant]
US 20060123005A1 · Burnett et al. · 2006 [cited by applicant]
US 20060173842A1 · Horvitz et al. · 2006 [cited by applicant]
US 20060271604A1 · Shoens · 2006 [cited by applicant]
US 20070005297A1 · Beresniewicz et al. · 2007 [cited by applicant]
US 20070011302A1 · Groner et al. · 2007 [cited by applicant]
US 20070027985A1 · Ramany et al. · 2007 [cited by applicant]
US 20070061783A1 · Prakash · 2007 [cited by applicant]
US 20070100855A1 · T. Kohl · 2007 [cited by applicant]
US 20070106706A1 · Ahrens et al. · 2007 [cited by applicant]
US 20070118561A1 · Idicula et al. · 2007 [cited by applicant]
US 20070143371A1 · Kottomtharayil et al. · 2007 [cited by applicant]
US 20080028006A1 · Liu et al. · 2008 [cited by applicant]
US 20080059399A1 · Delorme et al. · 2008 [cited by applicant]
US 20080059541A1 · Fachan et al. · 2008 [cited by applicant]
US 20080082593A1 · Komarov et al. · 2008 [cited by applicant]
US 20080162608A1 · Torii et al. · 2008 [cited by applicant]
US 20080172366A1 · Hannel et al. · 2008 [cited by applicant]
US 20080228772A1 · Plamondon · 2008 [cited by applicant]
US 20080250357A1 · Lee et al. · 2008 [cited by applicant]
US 20080256474A1 · Chakra et al. · 2008 [cited by applicant]
US 20080270469A1 · Myerson et al. · 2008 [cited by applicant]
US 20080270928A1 · Chakra et al. · 2008 [cited by applicant]
US 20080282244A1 · Wu et al. · 2008 [cited by applicant]
US 20080288306A1 · MacIntyre et al. · 2008 [cited by applicant]
US 20080301256A1 · McWilliams et al. · 2008 [cited by applicant]
US 20080313217A1 · Dunsmore et al. · 2008 [cited by applicant]
US 20090077087A1 · Urano et al. · 2009 [cited by applicant]
US 20090138500A1 · Yuan et al. · 2009 [cited by applicant]
US 20090199190A1 · Chen et al. · 2009 [cited by applicant]
US 20090222509A1 · King et al. · 2009 [cited by applicant]
US 20090240539A1 · Slawson et al. · 2009 [cited by applicant]
US 20090274047A1 · Kruys et al. · 2009 [cited by applicant]
US 20090319566A1 · Wald et al. · 2009 [cited by applicant]
US 20090327642A1 · Ogihara et al. · 2009 [cited by applicant]
US 20100030825A1 · Matsuzawa et al. · 2010 [cited by applicant]
US 20100036895A1 · Boyd et al. · 2010 [cited by applicant]
US 20100088317A1 · Bone et al. · 2010 [cited by applicant]
US 20100161557A1 · Anderson et al. · 2010 [cited by applicant]
US 20100179959A1 · Shoens · 2010 [cited by applicant]
US 20100217948A1 · Mason et al. · 2010 [cited by applicant]
US 20100241668A1 · Susanto et al. · 2010 [cited by applicant]
US 20100281214A1 · Jernigan, IV · 2010 [cited by applicant]
US 20100287512A1 · Gan et al. · 2010 [cited by applicant]
US 20110039622A1 · Levenson · 2011 [cited by applicant]
US 20110066668A1 · Guarraci · 2011 [cited by applicant]
US 20110082836A1 · Wang et al. · 2011 [cited by applicant]
US 20110125799A1 · Kandasamy et al. · 2011 [cited by applicant]
US 20110125973A1 · Lev et al. · 2011 [cited by applicant]
US 20110153560A1 · Bryant et al. · 2011 [cited by applicant]
US 20110161381A1 · Wang et al. · 2011 [cited by applicant]
US 20110161964A1 · Piazza et al. · 2011 [cited by applicant]
US 20110196833A1 · Drobychev et al. · 2011 [cited by applicant]
US 20110196899A1 · Hughes et al. · 2011 [cited by applicant]
US 20110202925A1 · Banerjee et al. · 2011 [cited by applicant]
US 20110246724A1 · Marathe et al. · 2011 [cited by applicant]
US 20110302357A1 · Sullivan · 2011 [cited by applicant]
US 20120036463A1 · Krakovsky et al. · 2012 [cited by applicant]
US 20120066179A1 · Saika · 2012 [cited by applicant]
US 20120096059A1 · Shimizu et al. · 2012 [cited by applicant]
US 20120116478A1 · Buhlmann et al. · 2012 [cited by applicant]
US 20120136843A1 · Bone et al. · 2012 [cited by applicant]
US 20120151438A1 · Bach et al. · 2012 [cited by applicant]
US 20120166478A1 · Das et al. · 2012 [cited by applicant]
US 20120179886A1 · Prahlad et al. · 2012 [cited by applicant]
US 20120204060A1 · Swift et al. · 2012 [cited by applicant]
US 20120216005A1 · Naito et al. · 2012 [cited by applicant]
US 20120317079A1 · Shoens et al. · 2012 [cited by applicant]
US 20130019072A1 · Strasser et al. · 2013 [cited by applicant]
US 20130024609A1 · Gorobets et al. · 2013 [cited by applicant]
US 20130031232A1 · Clymer et al. · 2013 [cited by applicant]
US 20130073819A1 · Havewala et al. · 2013 [cited by applicant]
US 20130086121A1 · Preslan · 2013 [cited by applicant]
US 20130091168A1 · Bhave et al. · 2013 [cited by applicant]
US 20130110787A1 · Garimella et al. · 2013 [cited by applicant]
US 20130145471A1 · Richard et al. · 2013 [cited by applicant]
US 20130191355A1 · Bone et al. · 2013 [cited by applicant]
US 20130212579A1 · Ben-Shaul et al. · 2013 [cited by applicant]
US 20130227236A1 · Flynn et al. · 2013 [cited by applicant]
US 20130254163A1 · Savage et al. · 2013 [cited by applicant]
US 20130268650A1 · Faitelson et al. · 2013 [cited by applicant]
US 20130275391A1 · Batwara et al. · 2013 [cited by applicant]
US 20130304903A1 · Mick et al. · 2013 [cited by applicant]
US 20130311454A1 · Ezzat · 2013 [cited by applicant]
US 20130318194A1 · Timbs · 2013 [cited by applicant]
US 20130325806A1 · Bachar et al. · 2013 [cited by applicant]
US 20130325808A1 · Bachar et al. · 2013 [cited by applicant]
US 20130339406A1 · Kanfi · 2013 [cited by applicant]
US 20140006354A1 · Parkison · 2014 [cited by examiner]
US 20140040199A1 · Golab et al. · 2014 [cited by applicant]
US 20140040693A1 · Kim et al. · 2014 [cited by applicant]
US 20140059158A1 · Chen et al. · 2014 [cited by applicant]
US 20140089278A1 · Lovinger et al. · 2014 [cited by applicant]
US 20140089649A1 · Chaganti · 2014 [cited by applicant]
US 20140095249A1 · Tarakad et al. · 2014 [cited by applicant]
US 20140095505A1 · Blanchflower et al. · 2014 [cited by applicant]
US 20140095560A1 · Ikai et al. · 2014 [cited by applicant]
US 20140095582A1 · Eshel et al. · 2014 [cited by applicant]
US 20140101389A1 · Nellans et al. · 2014 [cited by applicant]
US 20140156956A1 · Ezra · 2014 [cited by applicant]
US 20140181441A1 · Kottomtharayil et al. · 2014 [cited by applicant]
US 20140189257A1 · Aritome · 2014 [cited by applicant]
US 20140189267A1 · Qi et al. · 2014 [cited by applicant]
US 20140195847A1 · Webman et al. · 2014 [cited by applicant]
US 20140237193A1 · Shivashankaraiah · 2014 [cited by applicant]
US 20140258609A1 · Cui et al. · 2014 [cited by applicant]
US 20140258657A1 · Schott et al. · 2014 [cited by applicant]
US 20140280485A1 · A Hummaida et al. · 2014 [cited by applicant]
US 20140281307A1 · Peterson et al. · 2014 [cited by applicant]
US 20140281411A1 · Abdallah · 2014 [cited by applicant]
US 20140344222A1 · Morris et al. · 2014 [cited by applicant]
US 20140358356A1 · Jones et al. · 2014 [cited by applicant]
US 20140372384A1 · Long et al. · 2014 [cited by applicant]
US 20140372607A1 · Gladwin et al. · 2014 [cited by applicant]
US 20140373032A1 · Merry et al. · 2014 [cited by applicant]
US 20150006226A1 · Smith et al. · 2015 [cited by applicant]
US 20150012656A1 · Phillips et al. · 2015 [cited by applicant]
US 20150012666A1 · Pannese et al. · 2015 [cited by applicant]
US 20150067086A1 · Adriaens et al. · 2015 [cited by applicant]
US 20150067142A1 · Renkema · 2015 [cited by applicant]
US 20150106145A1 · Hamilton et al. · 2015 [cited by applicant]
US 20150135331A1 · Das · 2015 [cited by applicant]
US 20150143026A1 · Reddy et al. · 2015 [cited by applicant]
US 20150149736A1 · Kwon et al. · 2015 [cited by applicant]
US 20150186217A1 · Eslami Sarab · 2015 [cited by applicant]
US 20150186410A1 · Petculescu et al. · 2015 [cited by applicant]
US 20150186483A1 · Tappan et al. · 2015 [cited by applicant]
US 20150186527A1 · Rao et al. · 2015 [cited by applicant]
US 20150186529A1 · Rope et al. · 2015 [cited by applicant]
US 20150193347A1 · Kluesing et al. · 2015 [cited by applicant]
US 20150215405A1 · Baek et al. · 2015 [cited by applicant]
US 20150234716A1 · Brooker et al. · 2015 [cited by applicant]
US 20150234879A1 · Baldwin et al. · 2015 [cited by applicant]
US 20150242263A1 · Klose · 2015 [cited by applicant]
US 20150248253A1 · Kim et al. · 2015 [cited by applicant]
US 20150278282A1 · Sardina et al. · 2015 [cited by applicant]
US 20150278329A1 · Hrle et al. · 2015 [cited by applicant]
US 20150310034A1 · Godman et al. · 2015 [cited by applicant]
US 20150310035A1 · Godman et al. · 2015 [cited by applicant]
US 20150310054A1 · Passey · 2015 [cited by examiner]
US 20150347126A1 · Tibble et al. · 2015 [cited by applicant]
US 20160034356A1 · Aron et al. · 2016 [cited by applicant]
US 20160034481A1 · Kumarasamy et al. · 2016 [cited by applicant]
US 20160071233A1 · Macko et al. · 2016 [cited by applicant]
US 20160110105A1 · Karamcheti et al. · 2016 [cited by applicant]
US 20160139836A1 · Nallathambi et al. · 2016 [cited by applicant]
US 20160139952A1 · Geng et al. · 2016 [cited by applicant]
US 20160147654A1 · Zhao et al. · 2016 [cited by applicant]
US 20160224430A1 · Long et al. · 2016 [cited by applicant]
US 20160239185A1 · Balimidi et al. · 2016 [cited by applicant]
US 20160246816A1 · Abiri et al. · 2016 [cited by applicant]
US 20160269501A1 · Usgaonkar et al. · 2016 [cited by applicant]
US 20160292013A1 · Li et al. · 2016 [cited by applicant]
US 20160292429A1 · Manville et al. · 2016 [cited by applicant]
US 20160306810A1 · Ni et al. · 2016 [cited by applicant]
US 20160314046A1 · Kumarasamy · 2016 [cited by applicant]
US 20160335278A1 · Tabaaloute et al. · 2016 [cited by applicant]
US 20160350363A1 · Raja · 2016 [cited by examiner]
US 20160357677A1 · Hooker et al. · 2016 [cited by applicant]
US 20160359859A1 · Capone · 2016 [cited by applicant]
US 20160371296A1 · Passey et al. · 2016 [cited by applicant]
US 20160371297A1 · Okun et al. · 2016 [cited by applicant]
US 20160380878A1 · Bugenhagen et al. · 2016 [cited by applicant]
US 20160380913A1 · Morgan · 2016 [cited by examiner]
US 20170024152A1 · Bhagi et al. · 2017 [cited by applicant]
US 20170032006A1 · Anglin et al. · 2017 [cited by applicant]
US 20170046143A1 · Kochhar et al. · 2017 [cited by applicant]
US 20170052898A1 · Ash et al. · 2017 [cited by applicant]
US 20170078164A1 · Hildebrand et al. · 2017 [cited by applicant]
US 20170091046A1 · Bangalore et al. · 2017 [cited by applicant]
US 20170118287A1 · Beck · 2017 [cited by applicant]
US 20170123883A1 · Hall · 2017 [cited by applicant]
US 20170123935A1 · Pandit et al. · 2017 [cited by applicant]
US 20170163728A1 · Chawla et al. · 2017 [cited by applicant]
US 20170201582A1 · Zhang et al. · 2017 [cited by applicant]
US 20170206231A1 · Binder et al. · 2017 [cited by applicant]
US 20170270180A1 · State · 2017 [cited by applicant]
US 20170286455A1 · Li et al. · 2017 [cited by applicant]
US 20170316321A1 · Whitney et al. · 2017 [cited by applicant]
US 20170336983A1 · Roh et al. · 2017 [cited by applicant]
US 20170344598A1 · Constantinescu et al. · 2017 [cited by applicant]
US 20170344905A1 · Hack et al. · 2017 [cited by applicant]
US 20170366609A1 · Dieterich et al. · 2017 [cited by applicant]
US 20180040029A1 · Zeng et al. · 2018 [cited by applicant]
US 20180059946A1 · Kunii et al. · 2018 [cited by applicant]
US 20180089031A1 · Mitkar et al. · 2018 [cited by applicant]
US 20180101546A1 · Krasnow et al. · 2018 [cited by applicant]
US 20180129443A1 · Karve et al. · 2018 [cited by applicant]
US 20180165300A1 · Okun et al. · 2018 [cited by applicant]
US 20180165321A1 · Taron et al. · 2018 [cited by applicant]
US 20180176082A1 · Katz et al. · 2018 [cited by applicant]
US 20180176120A1 · Katz et al. · 2018 [cited by applicant]
US 20180181583A1 · Godman · 2018 [cited by applicant]
US 20180203798A1 · Hughes et al. · 2018 [cited by applicant]
US 20180232386A1 · Brow et al. · 2018 [cited by applicant]
US 20180276078A1 · Blea et al. · 2018 [cited by applicant]
US 20180288057A1 · Varadamma et al. · 2018 [cited by applicant]
US 20180307579A1 · Rothchilds et al. · 2018 [cited by applicant]
US 20180314423A1 · Gong et al. · 2018 [cited by applicant]
Cited By (9)
US 12,443,559 US 12,443,568 US 12,481,625 US 12,517,684 US 12,585,563 US 12,619,582 US 12,670,081 US 12,743,357 US 12,748,730