IP Library Granted Patent US 11,068,406
Granted Patent B2
US 11,068,406 · App. 16/066,498 · Granted Jul 20, 2021

Maintaining a single copy of data within a read cache

Inventor: Nickolay Alexandrovich Dalmatov (Saint Petersburg, RU)
Assignee: EMC IP Holding Company LLC
G06F12/0891G06F2212/1044
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 11,068,406
App. No.
16/066,498
Granted
Jul 20, 2021
Kind
B2
Abstract

A technique processes read requests from a set of requesters. The technique involves providing, while a first data element and a second data element are stored in secondary storage, the first data element from the secondary storage to the set of requesters in response to a first request to read the first data element from the set of requesters. The technique further involves providing, after the first data element is provided to the set of requesters in response to the first request, the second data element to the set of requesters in response to a second request to read the second data element from the set of requesters. The technique further involves maintaining, in response to detecting that the first data element and the second data element match, a single copy of the first and second data elements in a read cache for subsequent read access.

Claims (50)

1. In data storage circuitry, a method of processing read requests from a set of requesters, the method comprising:

while a first data element and a second data element are stored in secondary storage, providing the first data element from the secondary storage to the set of requesters in response to a first request to read the first data element, the first request being received by the data storage circuitry from the set of requesters;

after the first data element is provided to the set of requesters in response to the first request, providing the second data element to the set of requesters in response to a second request to read the second data element, the second request being received by the data storage circuitry from the set of requesters; and

in response to detecting that the first data element and the second data element match, maintaining a single copy of the first and second data elements in a read cache for subsequent read access by the set of requesters.

2. A method as in claim 1 wherein providing the first data element to the set of requesters in response to the first request includes placing a copy of the first data element in the read cache;

wherein providing the second data element to the set of requesters in response to the second request includes placing a copy of the second data element in the read cache; and

wherein maintaining the single copy of the first and second data elements in the read cache for subsequent read access includes performing a deduplication operation that deduplicates the copy of the first data element and the copy of the second data element into the single copy of the first and second data elements.

3. A method as in claim 2 wherein the read cache includes a deduplication index of digest entries, each digest entry including a digest that identifies a particular data element in the read cache; and

wherein performing the deduplication operation includes:

based on accessing the deduplication index of the read cache, detecting a match between (i) a first digest of a first digest entry of the deduplication index that identifies the first data element and (ii) a second digest of a second digest entry of the deduplication index that identifies the second data element.

4. A method as in claim 3 wherein performing the deduplication operation further includes:

in response to detecting the match between the first digest and the second digest, performing a bit-by-bit comparison operation that compares each bit of the first data element with a corresponding bit of the second data element to determine whether the first data element and the second data element match each other.

5. A method as in claim 4 wherein performing the deduplication operation further includes:

deleting one of the first data element and the second data element from the read cache in response to a result of the bit-by-bit comparison operation indicating that the first data element and the second data element match each other.

6. A method as in claim 3 wherein performing the deduplication operation further includes:

in response to detecting the match between the first digest and the second digest, deleting one of the first data element and the second data element from the read cache.

7. A method as in claim 6 wherein providing the first data element to the set of requesters in response to the first request further includes providing a first pointer that leads to (i) the first digest entry of the deduplication index and (ii) the copy of the first data element placed in the read cache;

wherein providing the second data element to the set of requesters in response to the second request further includes providing a second pointer that leads to (i) the second digest entry of the deduplication index and (ii) the copy of the second data element placed in the read cache; and

wherein performing the deduplication operation further includes:

in response to detecting the match between the first digest and the second digest, replacing the second pointer with the first pointer and nullifying the second digest entry of the deduplication index.

8. A method as in claim 6 , further comprising:

after the deduplication operation is performed, providing the first data element from the read cache to the set of requesters in response to another request to read the second data element from the set of requesters.

9. A method as in claim 8 , further comprising:

after the deduplication operation is performed, providing the first data element from the read cache to the set of requesters in response to another request to read the first data element from the set of requesters.

10. A method as in claim 1 wherein providing the first data element to the set of requesters in response to the first request includes placing a copy of the first data element in the read cache; and

wherein providing the second data element to the set of requesters in response to the second request includes (i) detecting that the first data element and the second data element match each other and (ii) providing the first data element from the read cache to the set of requesters in response to the second request to read the second data element.

11. A method as in claim 10 wherein the data storage circuitry includes a deduplication index of digest entries, each digest entry including a digest that uniquely identifies a particular data element stored in the secondary storage; and

wherein detecting that the first data element and the second data element match each other includes detecting a match between (i) a first digest of a first digest entry of the deduplication index that identifies the first data element and (ii) a second digest of a second digest entry of the deduplication index that identifies the second data element.

12. A method as in claim 11 , further comprising:

in response to detecting that the first data element and the second data element match each other, updating a set of pointers that initially referenced the second data element to subsequently reference the first data element in the read cache.

13. A method as in claim 12 , further comprising:

prior to receiving the first request to read the first data element, generating the first digest based on the first data element and adding the first digest to the first digest entry of the deduplication index; and

prior to receiving the second request to read the second data element, generating the second digest based on the second data element and adding the second digest to the second digest entry of the deduplication index.

14. A method as in claim 1 wherein the set of requesters includes a host computer which is external to the data storage circuitry; and wherein the method further comprises:

while providing the first data element, providing the second data element, and maintaining the single copy of the first and second data elements in the read cache, contemporaneously performing additional input/output (I/O) operations that store data elements within the secondary storage and load data elements from the secondary storage on behalf of the host computer.

15. A method as in claim 14 wherein contemporaneously performing the additional I/O operations includes:

prior to providing the first data element from the secondary storage to the set of requesters in response to the first request to read the first data element, placing a third data element in the read cache, the first data element overwriting the third data element in the read cache when the first data element is provided from the secondary storage to the set of requesters.

16. A method as in claim 15 , further comprising:

after the third data element is overwritten in the read cache by the first data element, overwriting the first data element in the read cache with a fourth data element in response to another read request from the set of requesters.

17. Data storage equipment, comprising:

a read cache;

a storage device interface that interfaces with a set of storage devices that provides secondary storage; and

control circuitry coupled with the read cache and the storage device interface, the control circuitry being operative to:

while a first data element and a second data element are stored in the secondary storage, provide the first data element from the secondary storage to a set of requesters in response to a first request to read the first data element, the first request being received by the control circuitry from the set of requesters;

after the first data element is provided to the set of requesters in response to the first request, providing the second data element to the set of requesters in response to a second request to read the second data element, the second request being received by the control circuitry from the set of requesters; and

in response to detecting that the first data element and the second data element match, maintaining a single copy of the first and second data elements in the read cache for subsequent read access by the set of requesters.

18. A computer program product having a non-transitory computer readable medium which stores a set of instructions to process read requests from a set of requesters; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

while a first data element and a second data element are stored in secondary storage, providing the first data element from the secondary storage to the set of requesters in response to a first request to read the first data element, the first request being received by the computerized circuitry from the set of requesters;

after the first data element is provided to the set of requesters in response to the first request, providing the second data element to the set of requesters in response to a second request to read the second data element, the second request being received by the computerized circuitry from the set of requesters; and

in response to detecting that the first data element and the second data element match, maintaining a single copy of the first and second data elements in a read cache for subsequent read access by the set of requesters.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (047648/0422) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2018
From: DALMATOV, NICKOLAY ALEXANDROVICH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 047671/0962 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 047648/0422 →