IP Library Granted Patent US 10,534,556
Granted Patent B2
US 10,534,556 · App. 15/966,184 · Granted Jan 14, 2020

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 10,534,556
App. No.
15/966,184
Granted
Jan 14, 2020
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 (59)

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

determining whether the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option;

if it is determined that the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, performing said hole punching; and

if it is determined that the backed free block does not have a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, not performing said hole punching.

2. The method of claim 1 , wherein it is determined that the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, 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.

3. The method of claim 2 , 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.

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

5. The method of claim 4 , 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.

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

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

7. 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.

8. The method of claim 7 , wherein the plurality of options include at least one 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.

9. 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.

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

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

12. The method of claim 11 , 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.

13. 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

determining whether the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option;

if it is determined that the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, performing said hole punching; and

if it is determined that the backed free block does not have a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, not performing said hole punching.

14. 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

determining whether the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option;

if it is determined that the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, performing said hole punching; and

if it is determined that the backed free block does not have a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, not performing said hole punching.

15. The non-transitory computer readable medium of claim 14 , wherein it is determined that the backed free block has a corresponding lower deck file system block that meets sharing criteria, for restrictive hole punching, specified in the selected option, 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.

16. The non-transitory computer readable medium of claim 15 , 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.

17. The non-transitory computer readable medium of claim 16 , wherein the corresponding lower deck file system block is shared between only the first and second files of the lower deck file system, and 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; and

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 14 , 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.

Assignments (6)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (046366/0014) 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 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 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/0093 →
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 Jun 1, 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 046286/0653 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 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 046366/0014 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2018
From: ARMANGAU, PHILIPPE; BASSOV, IVAN; FORRESTER, WALTER
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045667/0024 →