IP Library Granted Patent US 10,437,474
Granted Patent B1
US 10,437,474 · App. 15/499,206 · Granted Oct 8, 2019

Overwriting compressed data extents

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,437,474
App. No.
15/499,206
Granted
Oct 8, 2019
Kind
B1
Abstract

A technique for overwriting compressed data tests whether new data compressed with a first compression procedure fits within spaces provided for previous data. If the compressed new data does not fit, the technique compresses the new data using a second compression procedure. Assuming the second compression procedure reduces the compressed size of the new data to fit the available space, the technique stores the new data in the same location as the previous data. In this manner, overwrites can be accommodated in place without the need to create new mapping metadata.

Claims (74)

1. A method of overwriting compressed data in a data storage system, the method comprising:

receiving an IO (Input/Output) request specifying a write of new data to a specified logical address of a file within a file system, the file already storing previous data at the specified logical address such that the write of the new data is an overwrite;

compressing the new data using a first compression procedure;

performing a testing operation configured to generate a first result when the compressed new data fits within a space currently occupied by the previous data and to produce a second result otherwise; and

in response to the testing operation producing the second result, (i) compressing the new data using a second compression procedure and (ii) storing the new data as compressed using the second compression procedure within the space currently occupied by the previous data.

2. The method of claim 1 , wherein, prior to storing the new data, the previous data was stored along with other compressed data in a segment of blocks laid out contiguously in a physical address space of the file system, and wherein the method further comprises, when storing the new data:

identifying, within the segment of blocks, a compression header of the previous data; and

updating the compression header to store an identifier of the second compression procedure.

3. The method of claim 2 , wherein the compression header of the previous data also includes a field for storing a compressed length of the previous data, and wherein the method further comprises:

updating the field for storing the compressed length to a length of the new data as compressed using the second compression procedure.

4. The method of claim 3 , wherein the file system includes a set of metadata structures that map the logical address of the previous data to the segment of blocks, and wherein storing the new data is performed without changing any of the set of metadata structures.

5. The method of claim 3 ,

wherein the file system includes a set of metadata structures that map the logical address of the previous data to the segment of blocks,

wherein the set of metadata structures includes a virtual block map (VBM) that stores an extent list and a pointer to the segment of blocks,

wherein the extent list includes (i) the logical address in the file of the previous data and (ii) a version of the compressed length of the previous data, and

wherein storing the new data is performed without changing the version of the length of the previous data in the extent list.

6. The method of claim 5 , further comprising:

monitoring CPU (Central Processing Unit) activity of a CPU in the data storage system; and

performing a CPU activity test configured to produce a GO result in response to CPU activity falling below a predetermined threshold and to produce a NO-GO result otherwise,

wherein compressing the new data using the second compression procedure is performed in response to the CPU activity test producing the GO result.

7. The method of claim 2 , further comprising:

receiving a second IO request specifying a write of second new data to a second logical address of the file within the file system, the file already storing previous second data at the second logical address;

compressing the second new data using the first compression procedure;

performing the testing operation on the compressed second new data; and

in response to the testing operation on the compressed second new data producing the second result, storing the compressed second new data at another location in the file system.

8. A data storage system, comprising control circuitry that includes a set of processing units coupled to memory, the control circuitry constructed and arranged to:

receive an IO (Input/Output) request specifying a write of new data to a specified logical address of a file within a file system, the file already storing previous data at the specified logical address such that the write of the new data is an overwrite;

compress the new data using a first compression procedure;

perform a testing operation configured to generate a first result when the compressed new data fits within a space currently occupied by the previous data and to produce a second result otherwise; and

in response to the testing operation producing the second result, (i) compress the new data using a second compression procedure and (ii) store the new data as compressed using the second compression procedure within the space currently occupied by the previous data.

9. The data storage system of claim 8 , wherein, prior to storing the new data, the previous data was stored along with other compressed data in a segment of blocks laid out contiguously in a physical address space of the file system, and wherein the control circuitry, when constructed and arranged to store the new data, is further constructed and arranged to:

identify, within the segment of blocks, a compression header of the previous data; and

update the compression header to store an identifier of the second compression procedure.

10. The data storage system of claim 9 , wherein the compression header of the previous data also includes a field for storing a compressed length of the previous data, and wherein the control circuitry is further constructed and arranged to:

update the field for storing the compressed length to a length of the new data as compressed using the second compression procedure.

11. The data storage system of claim 10 ,

wherein the file system includes a set of metadata structures that map the logical address of the previous data to the segment of blocks,

wherein the set of metadata structures includes a virtual block map (VBM) that stores an extent list and a pointer to the segment of blocks,

wherein the extent list includes (i) the logical address in the file of the previous data and (ii) a version of the compressed length of the previous data, and

wherein the control circuitry is constructed and arranged to store the new data without changing the version of the length of the previous data in the extent list.

12. The data storage system of claim 11 , wherein the control circuitry is further constructed and arranged to:

monitor CPU (Central Processing Unit) activity of a CPU in the data storage system; and

perform a CPU activity test configured to produce a GO result in response to CPU activity falling below a predetermined threshold and to produce a NO-GO result otherwise,

compress the new data using the second compression procedure in response to the CPU activity test producing the GO result.

13. The data storage system of claim 9 , wherein the control circuitry is further constructed and arranged to:

receive a second IO request specifying a write of second new data to a second logical address of the file within the file system, the file already storing previous second data at the second logical address;

compress the second new data using the first compression procedure;

perform the testing operation on the compressed second new data; and

in response to the testing operation on the compressed second new data producing the second result, store the compressed second new data at another location in the file system.

14. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a data storage system, cause the control circuitry to perform a method for overwriting compressed data, the method comprising:

receiving an IO (Input/Output) request specifying a write of new data to a specified logical address of a file within a file system, the file already storing previous data at the specified logical address such that the write of the new data is an overwrite;

compressing the new data using a first compression procedure;

performing a testing operation configured to generate a first result when the compressed new data fits within a space currently occupied by the previous data and to produce a second result otherwise; and

in response to the testing operation producing the second result, (i) compressing the new data using a second compression procedure and (ii) storing the new data as compressed using the second compression procedure within the space currently occupied by the previous data.

15. The computer program product of claim 14 , wherein, prior to storing the new data, the previous data was stored along with other compressed data in a segment of blocks laid out contiguously in a physical address space of the file system, and wherein the method further comprises, when storing the new data:

identifying, within the segment of blocks, a compression header of the previous data; and

updating the compression header to store an identifier of the second compression procedure.

16. The computer program product of claim 15 , wherein the compression header of the previous data also includes a field for storing a compressed length of the previous data, and wherein the method further comprises:

updating the field for storing the compressed length to a length of the new data as compressed using the second compression procedure.

17. The computer program product of claim 16 , wherein the file system includes a set of metadata structures that map the logical address of the previous data to the segment of blocks, and wherein storing the new data is performed without changing any of the set of metadata structures.

18. The computer program product of claim 16 ,

wherein the file system includes a set of metadata structures that map the logical address of the previous data to the segment of blocks,

wherein the set of metadata structures includes a virtual block map (VBM) that stores an extent list and a pointer to the segment of blocks,

wherein the extent list includes (i) the logical address in the file of the previous data and (ii) a version of the compressed length of the previous data, and

wherein storing the new data is performed without changing the version of the length of the previous data in the extent list.

19. The computer program product of claim 18 , wherein the method further comprises:

monitoring CPU (Central Processing Unit) activity of a CPU in the data storage system; and

performing a CPU activity test configured to produce a GO result in response to CPU activity falling below a predetermined threshold and to produce a NO-GO result otherwise,

wherein compressing the new data using the second compression procedure is performed in response to the CPU activity test producing the GO result.

20. The computer program product of claim 15 , wherein the method further comprises:

receiving a second IO request specifying a write of second new data to a second logical address of the file within the file system, the file already storing previous second data at the second logical address;

compressing the second new data using the first compression procedure;

performing the testing operation on the compressed second new data; and

in response to the testing operation on the compressed second new data producing the second result, storing the compressed second new data at another location in the file system.

Assignments (14)
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 (051302/0528) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 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 (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
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 Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
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 Jan 24, 2018
From: VISWANADHA, KAMAKSHI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044710/0276 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2018
From: CHAUDHARY, MONICA
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044690/0821 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2017
From: ARMANGAU, PHILIPPE; BASSOV, IVAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042567/0465 →