IP Library Granted Patent US 10,942,845
Granted Patent B2
US 10,942,845 · App. 15/883,701 · Granted Mar 9, 2021

Inline coalescing of file system free space

Inventors: Rohit Chawla (Scotch Plains, NJ); Ahsan Rashid (Edison, NJ); Kumari Bijayalaxmi Nanda (Edison, NJ); Alexander S. Mathews (Morganville, NJ)
Assignee: EMC IP Holding Company LLC
G06F12/0238G06F12/0269G06F12/0891G06F2212/1024G06F2212/1044G06F2212/163G06F2212/608
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,942,845
App. No.
15/883,701
Granted
Mar 9, 2021
Kind
B2
Abstract

An in-line (or foreground) approach to obtaining contiguous ranges of free space in a file system of a data storage system that can select windows having blocks suitable for relocation at a time when one or more blocks within the respective windows are freed or de-allocated. By providing the in-line or foreground approach to obtaining contiguous ranges of free space in a file system, a more efficient determination of windows having blocks suitable for relocation can be achieved, thereby conserving processing resources of the data storage system.

Claims (50)

1. In a data storage system, a method of obtaining at least one contiguous range of free space, comprising:

performing a background process to obtain at least one contiguous range of free space, the background process comprising:

identifying one or more allocated blocks in one or more windows of a cache; and

relocating and de-allocating the one or more allocated blocks in the one or more windows to evacuate the one or more windows and obtain one or more contiguous ranges of free space; and

supplementing the background process with a foreground process to obtain at least one additional contiguous range of free space, the foreground process comprising:

receiving a first write request;

in response to the first write request, writing one or more first blocks as log structured data to a first window of the cache;

de-allocating one or more blocks previously written as log structured data to a previous window of the cache, the one or more previously written blocks corresponding to the one or more first blocks, respectively;

at a time when the one or more previously written blocks are de-allocated, proactively determining whether the previous window includes a number of remaining allocated blocks that is less than a first predetermined threshold value; and

having proactively determined that the previous window includes a number of remaining allocated blocks that is less than the first predetermined threshold value, relocating and de-allocating the remaining allocated blocks to evacuate the previous window and obtain the at least one additional contiguous range of free space.

2. The method of claim 1 wherein the identifying of the one or more allocated blocks includes determining whether a net number of the one or more windows of the cache exceeds a second predetermined threshold value.

3. The method of claim 2 wherein the identifying of the one or more allocated blocks is performed subsequent to determining that the net number of the one or more windows of the cache exceeds the second predetermined threshold value.

4. The method of claim 1 wherein the writing of the one or more first blocks includes sequentially writing the one or more first blocks to a head of a log corresponding to the first window of the cache.

5. A data storage system, comprising:

a memory;

a cache; and

a storage processor configured to execute instructions out of the memory to:

perform a background process to obtain at least one contiguous range of free space, the background process comprising:

identifying one or more allocated blocks in one or more windows of a cache; and

relocating and de-allocating the one or more allocated blocks in the one or more windows to evacuate the one or more windows and obtain one or more contiguous ranges of free space; and

supplement the background process with a foreground process to obtain at least one additional contiguous range of free space, the foreground process comprising:

receiving a first write request;

in response to the first write request, writing one or more first blocks as log structured data to a first window of the cache;

de-allocating one or more blocks previously written as log structured data to a previous window of the cache, the one or more previously written blocks corresponding to the one or more first blocks, respectively;

at a time when the one or more previously written blocks are de-allocated, proactively determining whether the previous window includes a number of remaining allocated blocks that is less than a first predetermined threshold value; and

having proactively determined that the previous window includes a number of remaining allocated blocks that is less than the first predetermined threshold value, relocating and de-allocating the remaining allocated blocks to evacuate the previous window and obtain the at least one additional contiguous range of free space.

6. The data storage system of claim 5 further comprising:

a storage pool including a plurality of slices of data storage.

7. The data storage system of claim 5 wherein the storage processor is further configured to execute the instructions out of the memory:

to determine, in the background process, whether a net number of the one or more windows of the cache exceeds a second predetermined threshold value.

8. The data storage system of claim 7 wherein the storage processor is further configured to execute the of instructions out of the memory:

to perform, in the background process, the identifying of the one or more allocated blocks subsequent to determining that the net number of the one or more windows of the cache exceeds the second predetermined threshold value.

9. The data storage system of claim 5 wherein the storage processor is further configured to execute the first set of instructions:

to sequentially write the one or more first blocks to a head of a log corresponding to the first window of the cache.

10. A computer program product having a non-transitory computer readable medium that stores a set of instructions that, when carried out by computerized circuitry, cause the computerized circuitry to perform a method of obtaining at least one contiguous range of free space in a data storage system, the method comprising:

performing a background process to obtain at least one contiguous range of free space, the background process comprising:

identifying one or more allocated blocks in one or more windows of a cache; and

relocating and de-allocating the one or more allocated blocks in the one or more windows to evacuate the one or more windows and obtain one or more contiguous ranges of free space; and

supplementing the background process with a foreground process to obtain at least one additional contiguous range of free space, the foreground process comprising:

receiving a first write request;

in response to the first write request, writing one or more first blocks as log structured data to a first window of the cache;

de-allocating one or more blocks previously written as log structured data to a previous window of the cache, the one or more previously written blocks corresponding to the one or more first blocks, respectively;

at a time when the one or more previously written blocks are de-allocated, proactively determining whether the previous window includes a number of remaining allocated blocks that is less than a first predetermined threshold value; and

having proactively determined that the previous window includes a number of remaining allocated blocks that is less than the first predetermined threshold value,

relocating and de-allocating the remaining allocated blocks to evacuate the previous window and obtain the at least one additional contiguous range of free space.

11. The method of claim 10 wherein the identifying of the one or more allocated blocks includes determining whether a net number of the one or more windows of the cache exceeds a second predetermined threshold value.

12. The method of claim 1 further comprising:

having evacuated the previous window, proactively determining whether a window of the cache adjacent to the previous window has a number of allocated blocks that is less than the first predetermined threshold value.

13. The method of claim 12 further comprising:

having proactively determined that a window of the cache adjacent to the previous window has a number of allocated blocks that is less than the first predetermined threshold value, evacuating the window of the cache adjacent to the previous window to obtain an increased contiguous range of free space that includes the evacuated previous window and the evacuated window of the cache adjacent to the previous window.

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 (045482/0131) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
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 Mar 5, 2018
From: CHAWLA, ROHIT; RASHID, AHSAN; NANDA, KUMARI BIJAYALAXMI; MATHEWS, ALEXANDER S.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045107/0420 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
Continuity (1)
Related Publication 20190236002A1 · Aug 1, 2019