IP Library Granted Patent US 10,558,613
Granted Patent B1
US 10,558,613 · App. 16/040,231 · Granted Feb 11, 2020

Storage system with decrement protection of reference counts

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Lior Kamran (Rishon LeZion, IL); Oran Baruch (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F16/137G06F3/061G06F3/067G06F3/0619G06F3/0632G06F9/45558G06F2009/45579
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,558,613
App. No.
16/040,231
Granted
Feb 11, 2020
Kind
B1
Abstract

A storage system in one embodiment comprises a plurality of storage devices storing data pages. Each data page has a content-based signature derived from that data page. The content-based signatures are associated with physical locations storing the data pages. In response to receipt of a write input/output (IO) request that includes a data segment that is smaller than a page granularity of the storage devices, a content-based signature associated with the data segment is determined which also corresponds to a target data page stored at one of the physical locations. In response to determining the content-based signature, an inflight write count corresponding to the content-based signature is incremented. In response to a decrement request to decrement a reference count of the physical location corresponding to the content-based signature, a decrement flag corresponding to the content-based signature is set in the data structure and the decrement request is postponed.

Claims (71)

1. An apparatus comprising:

a storage system comprising a plurality of storage devices and an associated storage controller;

the plurality of storage devices being configured to store a plurality of data pages, each of the data pages having a content-based signature derived from content of that data page, the content-based signatures of the data pages being associated with physical locations in the plurality of storage devices where the data pages are stored, the plurality of storage devices storing a reference count for each physical location, a given reference count indicating a number of the data pages that map via their respective content-based signatures to the same physical location in the plurality of storage devices;

wherein the storage controller is configured to:

receive a write input/output (IO) request, the write IO request comprising a data segment smaller than a page granularity of the plurality of storage devices;

in response to receiving the write IO request, determine a content-based signature associated with the data segment, the content-based signature corresponding to a target data page stored at one of the physical locations; and

in response to a decrement request to decrement a reference count of the physical location corresponding to the content-based signature of the target data page, postpone the decrement request,

wherein the storage controller is implemented using at least one processing device comprising a processor coupled to a memory.

2. The apparatus of claim 1 , wherein the storage controller is further configured to:

in response to determining the content-based signature associated with the data segment, increment an inflight write count corresponding to the determined content-based signature of the target data page in a data structure associated with the storage controller.

3. The apparatus of claim 2 , wherein the storage controller is further configured to:

in response to completion of the received write IO request, decrement the inflight write count; and

in response to the inflight write count being decremented to a predetermined value, execute the postponed decrement request.

4. The apparatus of claim 3 , wherein the storage controller is further configured to:

in response to the inflight write count being decremented to the predetermined value, remove an entry in the data structure corresponding to the content-based signature of the target data page from the data structure, the entry including the inflight write count corresponding to the determined content-based signature of the target data page.

5. The apparatus of claim 2 ,

wherein incrementing the inflight write count corresponding to the determined content-based signature of the target data page in the data structure comprises determining whether the data structure includes an entry corresponding to the content-based signature of the target data page,

wherein in response to determining that the data structure includes an entry corresponding to the content-based signature of the target data page, the entry including the inflight write count corresponding to the determined content-based signature of the target data page, the storage controller is configured to increment the inflight write count in the entry, and

wherein in response to determining that the data structure does not include an entry corresponding to the content-based signature of the target data page, the storage controller is configured to add an entry corresponding to the content-based signature of the target data page to the data structure, set an inflight write count in the added entry to 1, and clear a decrement postponed flag in the added entry.

6. The apparatus of claim 1 , wherein the storage controller is further configured to:

in response to the decrement request, set a decrement postponed flag corresponding to the content-based signature of the target data page in a data structure associated with the storage controller;

in response to a second decrement request to decrement the reference count of the physical location corresponding to the content-based signature of the target data page:

determine whether the decrement postponed flag corresponding to the content-based signature of the target data page is set in the data structure; and

in response to determining that the decrement postponed flag corresponding to the content-based signature of the target data page is set in the data structure, decrement the reference count of the physical location corresponding to the content-based signature of the target data page.

7. The apparatus of claim 2 , wherein postponing the decrement request comprises storing the decrement request in a decrement request postponed journal in correspondence with the content-based signature of the target data page.

8. The apparatus of claim 7 , wherein in response to a recovery of the storage system after an event, the storage controller is configured to:

reset the data structure;

determine whether any recovered write IO requests include a data segment smaller than a page granularity of the plurality of storage devices;

for a given write IO request that includes a data segment smaller than a page granularity of the plurality of storage devices, increment the inflight write count corresponding to the content-based signature of a data page targeted by the given write IO request in the data structure;

determine whether the decrement request postponed journal includes a decrement request corresponding to the content-based signature of the data page targeted by the given write IO request; and

in response to determining that the decrement request postponed journal includes a decrement request corresponding to the content-based signature of the data page targeted by the given write IO request, set a decrement postponed flag corresponding to the content-based signature of the data page targeted by the given write IO request in the data structure.

9. The apparatus of claim 7 , wherein the storage controller is further configured to:

in response to a decrement of the inflight write count corresponding to the content-based signature of the target data page to a predetermined value, execute the postponed decrement request and remove the decrement request corresponding to the content-based signature of the target data page from the decrement request postponed journal.

10. A method comprising:

receiving a write input/output (IO) request, the write IO request comprising a data segment smaller than a page granularity of a plurality of storage devices, the plurality of storage devices being configured to store a plurality of data pages, each of the data pages having a content-based signature derived from content of that data page, the content-based signatures of the data pages being associated with physical locations in the plurality of storage devices where the data pages are stored, the plurality of storage devices storing a reference count for each physical location, a given reference count indicating a number of the data pages that map via their respective content-based signatures to the same physical location in the plurality of storage devices;

in response to receiving the write IO request, determining a content-based signature associated with the data segment, the content-based signature corresponding to a target data page stored at one of the physical locations; and

in response to a decrement request to decrement a reference count of the physical location corresponding to the content-based signature of the target data page, postponing the decrement request,

wherein the method is implemented by at least one processing device comprising a processor coupled to a memory.

11. The method of claim 10 , wherein the method further comprises:

in response to determining the content-based signature associated with the data segment, incrementing an inflight write count corresponding to the determined content-based signature of the target data page in a data structure associated with the storage controller.

12. The method of claim 11 , wherein the method further comprises:

in response to completion of the received write IO request, decrementing the inflight write count; and

in response to the inflight write count being decremented to a predetermined value, executing the postponed decrement request.

13. The method of claim 12 , wherein the method further comprises:

in response to the inflight write count being decremented to the predetermined value, remove an entry in the data structure corresponding to the content-based signature of the target data page from the data structure, the entry including the inflight write count corresponding to the determined content-based signature of the target data page.

14. The method of claim 11 ,

wherein incrementing the inflight write count corresponding to the determined content-based signature of the target data page in the data structure comprises determining whether the data structure includes an entry corresponding to the content-based signature of the target data page,

wherein in response to determining that the data structure includes an entry corresponding to the content-based signature of the target data page, the entry including the inflight write count corresponding to the determined content-based signature of the target data page, the storage controller is configured to increment the inflight write count in the entry, and

wherein in response to determining that the data structure does not include an entry corresponding to the content-based signature of the target data page, the storage controller is configured to add an entry corresponding to the content-based signature of the target data page to the data structure, set an inflight write count in the added entry to 1, and clear a decrement postponed flag in the added entry.

15. The method of claim 10 , wherein the method further comprises:

in response to the decrement request, setting a decrement postponed flag corresponding to the content-based signature of the target data page in a data structure associated with the storage controller;

in response to a second decrement request to decrement the reference count of the physical location corresponding to the content-based signature of the target data page:

determining that the decrement postponed flag corresponding to the content-based signature of the target data page is set in the data structure; and

in response to determining that the decrement postponed flag corresponding to the content-based signature of the target data page is set in the data structure, decrementing the reference count of the physical location corresponding to the content-based signature of the target data page.

16. The method of claim 11 , wherein postponing the decrement request comprises storing the decrement request in a decrement request postponed journal in correspondence with the content-based signature of the target data page.

17. The method of claim 16 , wherein in response to a recovery of a storage system comprising the plurality of storage devices after an event, the method further comprises:

resetting the data structure;

determining whether any recovered write IO requests include a data segment smaller than a page granularity of the plurality of storage devices;

for a given write IO request that includes a data segment smaller than a page granularity of the plurality of storage devices, incrementing the inflight write count corresponding to the content-based signature of a data page targeted by the given write IO request in the data structure;

determining whether the decrement request postponed journal includes a decrement request corresponding to the content-based signature of the data page targeted by the given write IO request; and

in response to determining that the decrement request postponed journal includes a decrement request corresponding to the content-based signature of the data page targeted by the given write IO request, setting a decrement postponed flag corresponding to the content-based signature of the data page targeted by the given write IO request in the data structure.

18. The method of claim 16 , wherein the method further comprises:

in response to a decrement of the inflight write count corresponding to the content-based signature of the target data page to a predetermined value, executing the postponed decrement request and removing the decrement request corresponding to the content-based signature of the target data page from the decrement request postponed journal.

19. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes said at least one processing device to:

receive a write input/output (IO) request, the write IO request comprising a data segment smaller than a page granularity of a plurality of storage devices, the plurality of storage devices being configured to store a plurality of data pages, each of the data pages having a content-based signature derived from content of that data page, the content-based signatures of the data pages being associated with physical locations in the plurality of storage devices where the data pages are stored, the plurality of storage devices storing a reference count for each physical location, a given reference count indicating a number of the data pages that map via their respective content-based signatures to the same physical location in the plurality of storage devices;

in response to receiving the write IO request, determine a content-based signature associated with the data segment, the content-based signature corresponding to a target data page stored at one of the physical locations; and

in response to a decrement request to decrement a reference count of the physical location corresponding to the content-based signature of the target data page, postpone the decrement request.

20. The computer program product of claim 19 , the program code when executed by at least one processing device further causes said at least one processing device to:

in response to determining the content-based signature associated with the data segment, increment an inflight write count corresponding to the determined content-based signature of the target data page in a data structure associated with the storage controller;

in response to completion of the received write IO request, decrement the inflight write count; and

in response to the inflight write count being decremented to a predetermined value, execute the postponed decrement request.

Assignments (7)
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 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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2018
From: SHVEIDEL, VLADIMIR; KAMRAN, LIOR; BARUCH, ORAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046596/0261 →