IP Library Granted Patent US 10,996,857
Granted Patent B1
US 10,996,857 · App. 15/445,184 · Granted May 4, 2021

Extent map performance

Inventors: Yong Yang (Beijing, CN); Weibao Wu (Vadnais Heights, MN); Gallen Liu (Sichuan, CN)
Assignee: Veritas Technologies LLC
G06F3/061G06F3/064G06F3/067G06F3/0673G06F12/10G06F2212/1016G06F2212/263
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 10,996,857
App. No.
15/445,184
Granted
May 4, 2021
Kind
B1
Abstract

Disclosed are methods, systems, and processes to improve extent map performance A request for a data block is received. In response to detecting a cache miss, a temporary table is searched for the data block. If the data block is not found in the temporary table, a base table is searched for the data block.

Claims (96)

1. A computer-implemented method, implemented in a computing device, comprising:

receiving a request for data;

determining whether a cache in memory of the computing device includes an extent identifier for a logical extent inclusive of the requested data, wherein logical extents include a start offset and an end offset for corresponding data in disk storage;

in response to a determination that the cache does not include an extent identifier for a logical extent inclusive of the requested data,

searching a plurality of extent identifiers stored in a temporary extent map for an extent identifier for a logical extent inclusive of the requested data, wherein

the temporary extent map is stored in the cache operable to store updates to extent information stored in the cache;

in response to a determination that the temporary extent map has an extent identifier for a logical extent inclusive of the requested data, determining whether the extent identifier in the temporary extent map is for a logical extent overlapping a logical extent corresponding to an extent identifier in the cache; and

in response to a determination that the extent identifier for the logical extent inclusive of the requested data overlaps a logical extent corresponding to an extent identifier in the cache, providing non-overlapped portions of the logical extents from the temporary extent map in response to the request for data.

2. The method of claim 1 , further comprising:

storing an extent identifier for the logical extent including the non-overlapped portions in the cache;

determining that a size of the temporary extent map has exceeded a threshold value;

generating an object identifier for the extent identifier stored in the cache;

storing the extent identifier and object identifier in the temporary extent map; and

in response to a determination that the size of the temporary extent map has exceeded the threshold value, instantiating a background thread to generate a merged extent map.

3. The method of claim 2 , further comprising:

receiving a request for data included in an extent identifier;

searching for the third extent identifier in the cache; and

generating a first search result, wherein

the first search result indicates whether the temporary extent map should be searched for extent identifiers for logical extents inclusive of the requested data.

4. The method of claim 3 , further comprising:

if the first search result indicates that the extent identifier is not found in the cache, searching for the extent identifier in the temporary extent map; and

generating a second search result, wherein

the second search result indicates whether a base extent map should be searched for an extent identifier for logical extents inclusive of the requested data.

5. The method of claim 4 , further comprising:

if the extent identifier is not found in the temporary extent map, searching for the extent identifier in the base extent map; and

generating a third search result.

6. The method of claim 1 , wherein

the temporary extent map comprises a temporary extent map entry,

a base extent map comprises a base extent map entry; and

the temporary extent map is configured to be merged into the base extent map by virtue of the temporary extent map entry and the base extent map entry each comprising a plurality of corresponding fields comprising an extent identifier field.

7. The method of claim 6 , further comprising:

determining that a size of the temporary extent map has exceeded a threshold value; and

in response to a determination that the size of the temporary extent map has exceeded the threshold value, instantiating a background thread to generate a merged extent map, wherein

the merged extent map comprises extent information from one or more extent identifiers stored in the cache and extent information from one or more extent identifiers stored in the temporary extent map.

8. The method of claim 1 , wherein

extent information in the cache includes key-value pairs;

extent information in the temporary extent map includes key-value pairs; and

the key-value pairs of the cache and key-value pairs of the temporary extent map represent extents that can be split as a result of logical extent overlapping.

9. A non-transitory computer readable storage medium comprising program instructions executable to perform a method comprising:

receiving a request for data;

determining whether a cache in memory of a computing device includes an extent identifier for a logical extent inclusive of the requested data, wherein the logical extent of each extent identifier includes a start offset and an end offset for corresponding data in disk storage;

in response to a determination that the cache does not include an extent identifier for a logical extent inclusive of the requested data,

searching a plurality of extent identifiers stored in a temporary extent map for an extent identifier for a logical extent inclusive of the requested data, wherein

the temporary extent map is operable to store updates to extent information stored in the cache;

in response to a determination that the temporary extent map has an extent identifier for a logical extent inclusive of the requested data, determining whether the extent identifier in the temporary extent map is for a logical extent overlapping a logical extent corresponding to an extent identifier in the cache; and

in response to a determination that the extent identifier for the logical extent inclusive of the requested data overlaps a logical extent corresponding to an extent identifier in the cache, providing non-overlapped portions of the logical extents from the temporary extent map in response to the request for data.

10. The non-transitory computer readable storage medium of claim 9 , further comprising:

storing, in the cache, an extent identifier for the logical extent including the non-overlapped portions corresponding to the data; wherein the extent identifier is associated with the data;

determining that a size of the temporary extent map has exceeded a threshold value; and

generating an object identifier for the extent identifier; and

storing the extent identifier and object identifier in the temporary extent map.

11. The non-transitory computer readable storage medium of claim 10 , further comprising:

in response to a determination that the size of the temporary extent map has exceeded the threshold value, instantiating a background thread to generate a merged extent map.

12. The non-transitory computer readable storage medium of claim 11 , wherein the merged extent map comprises one or more extent identifiers from the extent identifiers stored in the cache and one or more extent identifiers from the extent identifiers stored in the temporary extent map.

13. The non-transitory computer readable storage medium of claim 10 , further comprising:

receiving a request for data included in an extent identifier;

searching for the extent identifier in the cache; and

generating a first search result, wherein the first search result indicates whether the temporary extent map should be searched for an extent identifier for logical extents inclusive of the requested data.

14. The non-transitory computer readable storage medium of claim 13 , further comprising:

if the first search result indicates that the extent identifier is not found in the cache, searching for the extent identifier in the temporary extent map; and

generating a second search result, wherein

the second search result indicates whether a base extent map should be searched for an extent identifier for logical extents inclusive of the requested data.

15. The non-transitory computer readable storage medium of claim 9 , wherein

extent information in the cache includes a key-value pairs;

extent information in the temporary extent map includes key-value pairs; and

the key-value pairs of the cache and key-value pairs of the temporary extent map represent extents that can be split as a result of logical extent overlapping.

16. A system comprising:

one or more processors; and

a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to perform a method comprising:

receiving a request for data,

determining whether a cache in the memory includes an extent identifier for a logical extent inclusive of the requested data, wherein the logical extent for each extent identifier includes a start offset and an end offset for corresponding data in disk storage;

in response to a determination that the cache does not include an extent identifier for a logical extent inclusive of the requested data,

searching a plurality of extent identifiers stored in temporary extent map for an extent identifier for logical extents inclusive of the requested data, wherein

the temporary extent map is operable to store updates to extent information stored in the cache;

each extent identifier of the one or more extent identifiers is mapped in the temporary map to logical extents including a start offset and an end offset for corresponding data in disk storage;

in response to a determination that the temporary extent map as an extent identifier for a logical extent inclusive of the requested data, determining whether the extent identifier in the temporary extent map is for a logical extent overlapping a logical extent corresponding to an extent identifier in the cache; and

in response to a determination that the extent identifier for the logical extent inclusive of the requested data overlaps a logical extent corresponding to an extent identifier in the cache, providing non-overlapped portions of the logical extents from the temporary extent map in response to the request for data.

17. The system of claim 16 , further comprising:

storing an extent identifier for the logical extent including the non-overlapped portions in the cache;

determining that a size of the temporary extent map has exceeded a threshold value;

generating an object identifier for the extent identifier stored in cache;

storing the extent identifier and object identifier in the temporary extent map; and

in response to a determination that the size of the temporary extent map has exceeded the threshold value, instantiating a background thread to generate a merged extent map, wherein

the merged extent map comprises one or more extent identifiers from extent identifiers stored in the cache and one or more extent identifiers from extent identifiers stored in the temporary extent map.

18. The system of claim 17 , further comprising:

receiving a request for data included in an extent identifier;

searching for the extent identifier in the cache; and

generating a first search result, wherein the first search result indicates whether the temporary extent map should be searched for an extent identifier for a logical extent inclusive of the requested data.

19. The system of claim 18 , further comprising:

if the first search result indicates that the extent identifier is not found in the cache, searching for the extent identifier in the temporary extent map; and

generating a second search result, wherein

the second search result indicates whether a base extent map should be searched for and extent identifier for a logical extent inclusive of the requested data.

20. The system of claim 16 , wherein

extent information in the cache includes key-value pairs;

extent information in the temporary extent map includes key-value pairs; and

the key-value pairs of the cache and key-value pairs of the temporary extent map represent extents that can be split as a result of logical extent overlapping.

Assignments (10)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0931 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2017
From: YANG, YONG; LIU, GALLEN; WU, WEIBAO
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 044343/0248 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Jul 10, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 043141/0403 →