IP Library Granted Patent US 10,996,853
Granted Patent B2
US 10,996,853 · App. 16/526,181 · Granted May 4, 2021

Deduplicated data block ownership determination

Inventors: Anton Kucherov (Dudley, MA); Uri Shabi (Tel Mond, IL); Ronen Gazit (Tel Aviv, IL); Vladimir Shveidel (Pardes-Hana, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0607G06F3/0641G06F3/0652G06F3/0659G06F3/0683G06F7/523G06F16/174G06F16/1748G06F16/215
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,853
App. No.
16/526,181
Granted
May 4, 2021
Kind
B2
Abstract

Techniques for determining unique ownership of data blocks includes selecting a first data block referenced by a first logical address of a first logical device, wherein first metadata for the first data block includes a reference count and a result used in determining sole unique ownership of the first data block; determining C 1 , an expected value of the result of the first metadata when the first logical device is a sole unique owner of the first data block; and performing first processing that determines whether the first logical device is the sole unique owner of the first data block. The first processing includes: determining whether C 1 equals a current value of the result of the first metadata; and determining that the first logical device is the sole unique owner of the first data block if C 1 equals the current value of the result of the first metadata.

Claims (64)

1. A method of determining unique ownership of data blocks comprising:

selecting a first data block referenced by a first logical address of a first logical device, wherein first metadata for the first data block includes a reference count and a result and wherein the reference count denotes a number of references to the first data block and the result denotes a value used in determining sole unique ownership of the first data block;

determining C 1 , an expected value of the result of the first metadata when the first logical device is a sole unique owner of the first data block; and

performing first processing that determines whether the first logical device is the sole unique owner of the first data block, wherein the first processing includes:

determining whether C 1 equals a current value of the result of the first metadata; and

responsive to determining C 1 equals the current value of the result of the first metadata, determining that the first logical device is the sole unique owner of the first data block, and otherwise determining that the first logical device is not the sole unique owner of the first data block.

2. The method of claim 1 , wherein C 1 is determined using the reference count, a maximum prime number, a first prime number that is uniquely assigned to the first logical device.

3. The method of claim 2 , wherein the first logical device is one of a plurality of logical devices and each of the plurality of logical devices is assigned a different prime number less than the maximum prime number.

4. The method of claim 3 , further comprising:

writing first data to the first logical address of the first logical device; and

responsive to said writing, performing second processing including:

associating the first data block with the first logical address, wherein the first logical address references the first data block;

incrementing the reference count of the first metadata of the first data block; and updating the result of the first metadata from a first value to a second value, wherein said updating includes:

determining a first product by multiplying the first value by the first prime number that is assigned to the first logical device; and

determining the second value as the first value modulo the maximum prime number.

5. The method of claim 4 , wherein said second processing further comprises:

determining that the first data written to the first logical address is a duplicate of other data currently stored in the first data block; and

updating the first logical address to reference the first data block.

6. The method of claim 4 , wherein said second processing further comprises:

determining that the first data written to the first logical address is not a duplicate of other data currently stored;

allocating physical storage for the first data block;

storing the first data at the first data block; and

updating the first logical address to reference the first data block.

7. The method of claim 4 , wherein said second processing is included in data deduplication processing performed for a first write I/O operation that writes the first data to the first logical address of the first logical device.

8. The method of claim 3 , further comprising:

modifying or deleting content stored at the first logical address of the first logical device; and

responsive to said modifying or deleting content, performing second processing including:

decrementing the reference count of the first metadata of the first data block; and

updating the result of the first metadata from a first value to a second value, wherein said updating includes:

determining a first product by multiplying the first value by a modular multiplicative inverse of the first prime number that is assigned to the first logical device; and

determining the second value as the first value modulo the maximum prime number.

9. The method of claim 8 , wherein said modifying or deleting content stored at the first logical address of the first logical device is performed in connection with an I/O operation directed to the first logical address of the first logical device.

10. The method of claim 8 , wherein said modifying or deleting content stored at the first logical address of the first logical device is performed in connection with an operation that deletes the first logical device.

11. The method of claim 10 , wherein the operation that deletes the first logical device is a management operation received over a management or control path.

12. The method of claim 8 , wherein the modular multiplicative inverse of the first prime number that is assigned to the first logical device is included in a table of computed modular multiplicative inverses for a plurality of prime numbers each less than the maximum prime number.

13. The method of claim 3 , wherein C 1 is determined using a first value selected from a table of computed values, wherein the table includes a plurality of values corresponding to the first prime number, wherein each of the plurality of values is computed by raising the first prime number to a different integer power greater than 0, and wherein the first value is one of the plurality of values.

14. The method of claim 3 , wherein C 1 is a first precomputed value selected from a table.

15. A system comprising:

one or more processors; and

a memory comprising code stored thereon that, when executed by at least one of the one or more processors, performs a method of determining unique ownership of data blocks comprising:

selecting a first data block referenced by a first logical address of a first logical device, wherein first metadata for the first data block includes a reference count and a result and wherein the reference count denotes a number of references to the first data block and the result denotes a value used in determining sole unique ownership of the first data block;

determining C 1 , an expected value of the result of the first metadata when the first logical device is a sole unique owner of the first data block; and

performing first processing that determines whether the first logical device is the sole unique owner of the first data block, wherein the first processing includes:

determining whether C 1 equals a current value of the result of the first metadata; and

responsive to determining C 1 equals the current value of the result of the first metadata, determining that the first logical device is the sole unique owner of the first data block, and otherwise determining that the first logical device is not the sole unique owner of the first data block.

16. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of determining unique ownership of data blocks comprising:

selecting a first data block referenced by a first logical address of a first logical device, wherein first metadata for the first data block includes a reference count and a result and wherein the reference count denotes a number of references to the first data block and the result denotes a value used in determining sole unique ownership of the first data block;

determining C 1 , an expected value of the result of the first metadata when the first logical device is a sole unique owner of the first data block; and

performing first processing that determines whether the first logical device is the sole unique owner of the first data block, wherein the first processing includes:

determining whether C 1 equals a current value of the result of the first metadata; and

responsive to determining C 1 equals the current value of the result of the first metadata, determining that the first logical device is the sole unique owner of the first data block, and otherwise determining that the first logical device is not the sole unique owner of the first data block.

17. The non-transitory computer readable medium of claim 16 , wherein C 1 is determined using the reference count, a maximum prime number, a first prime number that is uniquely assigned to the first logical device.

18. The non-transitory computer readable medium of claim 17 , wherein the first logical device is one of a plurality of logical devices and each of the plurality of logical devices is assigned a different prime number less than the maximum prime number.

19. The non-transitory computer readable medium of claim 18 , wherein the method further comprises:

writing first data to the first logical address of the first logical device; and

responsive to said writing, performing second processing including:

associating the first data block with the first logical address, wherein the first logical address references the first data block;

incrementing the reference count of the first metadata of the first data block; and

updating the result of the first metadata from a first value to a second value, wherein said updating includes:

determining a first product by multiplying the first value by the first prime number that is assigned to the first logical device; and

determining the second value as the first value modulo the maximum prime number.

20. The non-transitory computer readable medium of claim 19 , wherein said second processing further comprises:

determining that the first data written to the first logical address is a duplicate of other data currently stored in the first data block; and

updating the first logical address to reference the first data block.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 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 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 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 060436/0088 →
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 AT REEL 050406 FRAME 421 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 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
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 053311/0169 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: SHABI, URI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049910/0439 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2019
From: KUCHEROV, ANTON; GAZIT, RONEN; SHVEIDEL, VLADIMIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049904/0411 →
Continuity (1)
Related Publication 20210034247A1 · Feb 4, 2021
Cited By (1)
US 12,287,740