# US 9,519,590 B1 · Managing global caches in data storage systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,519,590 B1
- Document ID: US9519590B1
- Status: Granted
- Kind: B1
- Application number: 13/533,311
- Filed: 2012-06-26
- Granted: 2016-12-13
- Earliest claimed: 2012-06-26
- Assignees: EMC IP Holding Company LLC
- Applicants: Philippe Armangau; Christopher Seibel
- Inventors: Philippe Armangau; Christopher Seibel
- Web page: https://patentgrep.com/patent/US9519590B1

## CPC

- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F 12/0871: Allocation or management of cache space
- G06F 12/123: with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F 16/00: Information retrieval; Database structures therefor; File system structures therefor
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 12/0864: using pseudo-associative means, e.g. set-associative or hashing
- G06F 12/122: of the least frequently used [LFU] type, e.g. with individual count value
- G06F 2212/281: Single cache
- G06F 2212/463: File
- G06F 2212/466: Metadata, control data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method is used in managing global caches in data storage systems. A cache entry of a global cache of a data storage system is accessed upon receiving a request to perform an I/O operation on a storage object. The cache entry is associated with the storage object. Accessing the cache entry includes holding a reference to the cache entry. A determination is made as to whether the I/O operation is associated with a sequential access. Based on the determination, releasing the reference to the cache entry is delayed.

## Claims

### Claim 1

A method for use in managing global caches in data storage systems, the method comprising:
accessing a cache entry of a global cache of a data storage system upon receiving a request to perform an I/O operation on a storage object, wherein the cache entry is associated with the storage object, wherein accessing the cache entry includes acquiring a lock, holding a reference to the cache entry, releasing the lock, and providing the cache entry to a client, wherein the global cache includes a set of buffer cache objects managed by a set of buffer cache descriptors, wherein the storage object includes a file of a file system, wherein the cache entry includes information regarding metadata of the file system;
determining whether the I/O operation is associated with a sequential access indicating a high probability of the cache entry being accessed at least two times in a time period; and
based on the determination, delaying releasing the reference to the cache entry by the client for the time period, wherein delaying releasing the reference to the cache entry includes delaying adding information regarding the cache entry to a reusable list of cache entries configured to provide the cache entries for reuse by the data storage system, wherein the client accesses the cache entry during the time period without removing the cache entry from the reusable list and without acquiring and releasing the lock.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
removing the cache entry from a global reusable list associated with the global cache, wherein the global reusable list includes a linked list, wherein the linked list includes a set of metadata objects, wherein each metadata object of the set of metadata objects is available as a free entry, wherein the linked list is managed in a least recently used manner.

### Claim 3 (depends on 2)

The method of claim 2, wherein a metadata object stored in the global reusable list includes an indirect block entry.

### Claim 4 (depends on 1)

The method of claim 1, wherein the global cache includes a global metadata cache.

### Claim 5 (depends on 4)

The method of claim 4, wherein the global metadata cache includes a set of global data block cache descriptors for storing information for a set of buffer cache objects stored in a memory of the data storage system, wherein a global data block cache descriptor of the set of global data block cache descriptors is associated with a buffer cache object of the set of buffer cache objects, wherein a buffer cache object stores metadata of a file of a file system.

### Claim 6 (depends on 2)

The method of claim 2, further comprising:
adding a metadata object to the global reusable list based on a use recency information of the metadata object.

### Claim 7 (depends on 1)

The method of claim 1, wherein a file of a file system is associated with an inode, wherein the inode of the file includes a set of indirect blocks, wherein each indirect block of the set of indirect blocks is represented by an indirect block entry.

### Claim 8 (depends on 1)

The method of claim 1, wherein releasing the reference to the cache entry is delayed for a predetermined time interval.

### Claim 9 (depends on 1)

The method of claim 1, wherein the sequential access includes accessing a cache entry associated with a storage object repetitively.

### Claim 10 (depends on 2)

The method of claim 2, further comprising:
receiving a request to access a metadata object of a file of a file system;
determining, whether to allocate a free cache entry from the global reusable list based on whether the metadata object is found in the global cache;
based on the determination, allocating the free cache entry from the global reusable list; and
holding the reference to the free cache entry for a predetermined time interval.

### Claim 11

A system for use in managing global caches in data storage systems, the system comprising a processor configured to:
access a cache entry of a global cache of a data storage system upon receiving a request to perform an I/O operation on a storage object, wherein the cache entry is associated with the storage object, wherein accessing the cache entry includes acquiring a lock, holding a reference to the cache entry, releasing the lock, and providing the cache entry to a client, wherein the global cache includes a set of buffer cache objects managed by a set of buffer cache descriptors, wherein the storage object includes a file of a file system, wherein the cache entry includes information regarding metadata of the file system;
determine whether the I/O operation is associated with a sequential access indicating a high probability of the cache entry being accessed at least two times in a time period; and
delay, based on the determination, releasing the reference to the cache entry by the client for the time period, wherein delaying releasing the reference to the cache entry includes delaying adding information regarding the cache entry to a reusable list of cache entries configured to provide the cache entries for reuse by the data storage system, wherein the client accesses the cache entry during the time period without removing the cache entry from the reusable list and without acquiring and releasing the lock.

### Claim 12 (depends on 11)

The system of claim 11, further comprising:
remove the cache entry from a global reusable list associated with the global cache, wherein the global reusable list includes a linked list, wherein the linked list includes a set of metadata objects, wherein each metadata object of the set of metadata objects is available as a free entry, wherein the linked list is managed in a least recently used manner.

### Claim 13 (depends on 12)

The system of claim 12, wherein a metadata object stored in the global reusable list includes an indirect block entry.

### Claim 14 (depends on 11)

The system of claim 11, wherein the global cache includes a global metadata cache.

### Claim 15 (depends on 14)

The system of claim 14, wherein the global metadata cache includes a set of global data block cache descriptors for storing information for a set of buffer cache objects stored in a memory of the data storage system, wherein a global data block cache descriptor of the set of global data block cache descriptors is associated with a buffer cache object of the set of buffer cache objects, wherein a buffer cache object stores metadata of a file of a file system.

### Claim 16 (depends on 12)

The system of claim 12, further comprising:
add a metadata object to the global reusable list based on a use recency information of the metadata object.

### Claim 17 (depends on 11)

The system of claim 11, wherein a file of a file system is associated with an inode, wherein the inode of the file includes a set of indirect blocks, wherein each indirect block of the set of indirect blocks is represented by an indirect block entry.

### Claim 18 (depends on 11)

The system of claim 11, wherein releasing the reference to the cache entry is delayed for a predetermined time interval.

### Claim 19 (depends on 11)

The system of claim 11, wherein the sequential access includes accessing a cache entry associated with a storage object repetitively.

### Claim 20 (depends on 12)

The system of claim 12, further comprising:
receive a request to access a metadata object of a file of a file system;
determine, whether to allocate a free cache entry from the global reusable list based on whether the metadata object is found in the global cache;
allocate, based on the determination, the free cache entry from the global reusable list; and
hold the reference to the free cache entry for a predetermined time interval.
