IP Library Granted Patent US 11,204,703
Granted Patent B2
US 11,204,703 · App. 16/708,515 · Granted Dec 21, 2021

Techniques for scavenging of free provisioned blocks

Inventors: Philippe Armangau (Acton, MA); Ivan Bassov (Brookline, MA); Walter Forrester (Berkeley Heights, NJ)
Assignee: EMC IP Holding Company LLC
G06F3/0632G06F3/0604G06F3/064G06F3/067G06F3/0643G06F16/13
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,204,703
App. No.
16/708,515
Granted
Dec 21, 2021
Kind
B2
Abstract

Techniques for scavenging blocks may include: determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system; and performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system. Scavenging may include issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system. The selected option may be one of multiple options each specifying a different candidate set of upper deck file systems upon which hole punching is performed when selected.

Claims (78)

1. A method of scavenging blocks comprising:

determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system; and

performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system, wherein said scavenging further includes:

issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system, and wherein said hole punching includes:

determining whether the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, or otherwise not shared with another lower deck file system entity;

responsive to determining the backed free block has a corresponding lower deck file system block that is not shared with another lower deck file system entity, freeing the corresponding lower deck file system block; and

responsive to determining the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, not freeing the corresponding lower deck file system block.

2. The method of claim 1 , wherein each of the candidate upper deck file systems is implemented as a file in the lower deck file system, and wherein the first candidate upper deck file system is implemented as a first file in the lower deck file system, and a second of the candidate upper deck file systems is implemented as a second file in the lower deck file system.

3. The method of claim 2 , wherein the corresponding lower deck file system block is shared between only the first and second files of the lower deck file system.

4. The method of claim 3 , wherein said hole punching further comprises:

responsive to determining the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, modifying the status of the corresponding lower deck file system block to not shared.

5. The method of claim 4 , wherein said hole punching includes:

updating a status associated with the backed free block of the first candidate upper deck file system to free.

6. The method of claim 1 , further comprising:

selecting, in accordance with one or more criteria, the selected option from a plurality of options, wherein each of the plurality of options specifies a different set of candidate upper deck file systems for which scavenging is performed, when said each option is selected, to attempt to free blocks of the lower deck file system.

7. A method of scavenging blocks comprising:

determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system;

performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system, wherein said scavenging further includes:

issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system; and

selecting, in accordance with one or more criteria, the selected option from a plurality of options, wherein each of the plurality of options specifies a different set of candidate upper deck file systems for which scavenging is performed, when said each option is selected, to attempt to free blocks of the lower deck file system, wherein the plurality of options includes one or more of:

a first option indicating to perform hole punching only on primary upper deck file systems and not on snapshots of primary upper deck file systems, and wherein hole punching is only performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are not shared;

a second option indicating to perform hole punching on both primary upper deck file systems and snapshots of primary upper deck file systems, and wherein hole punching is only performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are not shared;

a third option indicating to perform hole punching only on primary upper deck file systems and not on snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared;

a fourth option indicating to perform hole punching on both primary upper deck file systems and snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared;

a fifth option indicating to perform hole punching on primary upper deck file systems and only on oldest snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared; and

a sixth option indicating to perform hole punching on primary upper deck file systems and only read-write snapshots of primary upper deck file systems, and wherein hole punching stops when a minimum threshold of backed free blocks of the upper deck file system remain.

8. The method of claim 7 , wherein a data storage system includes the lower deck file system and a plurality of upper deck file systems, wherein physical storage devices of the data storage system provide provisioned storage for allocated blocks of the lower deck file system mapped to blocks of the plurality of upper deck file systems that have been written to.

9. The method of claim 8 , wherein the one or more criteria include at least one criteria related to current I/O workload on the data storage system.

10. The method of claim 8 , wherein the one or more criteria include at least one criteria related to utilization of a component of the data storage system.

11. The method of claim 10 , wherein the at least one criteria relates to utilization of: a processor that executes code, a component that reads data from and writes data to the physical storage devices, a component that receives I/O requests from a client.

12. A system comprising:

at least one processor; and

a memory comprising code stored thereon that, when executed, performs a method of scavenging blocks comprising:

determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system; and

performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system, wherein said scavenging further includes:

issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system, and wherein said hole punching includes:

determining whether the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, or otherwise not shared with another lower deck file system entity;

responsive to determining the backed free block has a corresponding lower deck file system block that is not shared with another lower deck file system entity, freeing the corresponding lower deck file system block; and

responsive to determining the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, not freeing the corresponding lower deck file system block.

13. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of scavenging blocks comprising:

determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system; and

performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system, wherein said scavenging further includes:

issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system, and wherein said hole punching includes:

determining whether the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, or otherwise not shared with another lower deck file system entity;

responsive to determining the backed free block has a corresponding lower deck file system block that is not shared with another lower deck file system entity, freeing the corresponding lower deck file system block; and

responsive to determining the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, not freeing the corresponding lower deck file system block.

14. The non-transitory computer readable medium of claim 13 , wherein each of the candidate upper deck file systems is implemented as a file in the lower deck file system, and wherein the first candidate upper deck file system is implemented as a first file in the lower deck file system, and a second of the candidate upper deck file systems is implemented as a second file in the lower deck file system.

15. The non-transitory computer readable medium of claim 14 , wherein the corresponding lower deck file system block is shared between only the first and second files of the lower deck file system.

16. The non-transitory computer readable medium of claim 15 , wherein said hole punching further comprises:

responsive to determining the backed free block has a corresponding lower deck file system block that is shared with another lower deck file system entity, modifying the status of the corresponding lower deck file system block to not shared.

17. The non-transitory computer readable medium of claim 16 , wherein said hole punching includes:

updating a status associated with the backed free block of the first candidate upper deck file system to free.

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

selecting, in accordance with one or more criteria, the selected option from a plurality of options, wherein each of the plurality of options specifies a different set of candidate upper deck file systems for which scavenging is performed, when said each option is selected, to attempt to free blocks of the lower deck file system.

19. A system comprising:

at least one processor; and

a memory comprising code stored thereon that, when executed, performs a method of scavenging blocks comprising:

determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system;

performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system, wherein said scavenging further includes:

issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system; and

selecting, in accordance with one or more criteria, the selected option from a plurality of options, wherein each of the plurality of options specifies a different set of candidate upper deck file systems for which scavenging is performed, when said each option is selected, to attempt to free blocks of the lower deck file system, wherein the plurality of options includes one or more of:

a first option indicating to perform hole punching only on primary upper deck file systems and not on snapshots of primary upper deck file systems, and wherein hole punching is only performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are not shared;

a second option indicating to perform hole punching on both primary upper deck file systems and snapshots of primary upper deck file systems, and wherein hole punching is only performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are not shared;

a third option indicating to perform hole punching only on primary upper deck file systems and not on snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared;

a fourth option indicating to perform hole punching on both primary upper deck file systems and snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared;

a fifth option indicating to perform hole punching on primary upper deck file systems and only on oldest snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared; and

a sixth option indicating to perform hole punching on primary upper deck file systems and only read-write snapshots of primary upper deck file systems, and wherein hole punching stops when a minimum threshold of backed free blocks of the upper deck file system remain.

20. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of scavenging blocks comprising:

determining, in accordance with a selected option, a set of candidate upper deck file systems, wherein at least a first of the candidate upper deck file systems has storage allocated from at least one block of a lower deck file system;

performing, in accordance with the selected option, scavenging of the set of candidate upper deck file systems to attempt to free blocks of the lower deck file system, wherein said scavenging further includes:

issuing a request to perform hole punching of a backed free block of the first candidate upper deck file system, wherein the backed free block has first provisioned storage that is associated with a block of the lower deck file system; and

selecting, in accordance with one or more criteria, the selected option from a plurality of options, wherein each of the plurality of options specifies a different set of candidate upper deck file systems for which scavenging is performed, when said each option is selected, to attempt to free blocks of the lower deck file system, wherein the plurality of options include one or more of:

a first option indicating to perform hole punching only on primary upper deck file systems and not on snapshots of primary upper deck file systems, and wherein hole punching is only performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are not shared;

a second option indicating to perform hole punching on both primary upper deck file systems and snapshots of primary upper deck file systems, and wherein hole punching is only performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are not shared;

a third option indicating to perform hole punching only on primary upper deck file systems and not on snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared;

a fourth option indicating to perform hole punching on both primary upper deck file systems and snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared;

a fifth option indicating to perform hole punching on primary upper deck file systems and only on oldest snapshots of primary upper deck file systems, and wherein hole punching is performed for blocks of a primary upper deck file system having storage provisioned from corresponding lower deck file system blocks that are either shared or not shared; and

a sixth option indicating to perform hole punching on primary upper deck file systems and only read-write snapshots of primary upper deck file systems, and wherein hole punching stops when a minimum threshold of backed free blocks of the upper deck file system remain.

Assignments (9)
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 (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 (052216/0758) 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 IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
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 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2019
From: ARMANGAU, PHILIPPE; BASSOV, IVAN; FORRESTER, WALTER
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051224/0483 →