IP Library Granted Patent US 10,467,222
Granted Patent B1
US 10,467,222 · App. 15/395,968 · Granted Nov 5, 2019

Recovering compressed data to reduce data loss

Inventors: Yaming Kuang (Shanghai, CN); Weili Huang (Shanghai, CN); Hansi Wu (Shanghai, CN); Marc DeSouter (Wayne, NJ); Ivan Bassov (Brookline, MA); Frankie Wei Fang (Shanghai, CN)
Assignee: EMC IP Holding Company LLC
G06F16/2365G06F16/16G06F16/1744G06F16/24562
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,467,222
App. No.
15/395,968
Granted
Nov 5, 2019
Kind
B1
Abstract

A technique for repairing damage to a file system stores compression headers in association with respective extents of in-line compressed data. A repair utility reads contents from the compression headers and applies the contents to repair damaged metadata structures that the file system uses to access the associated extents. In this fashion, the repair utility restores access to compressed data, which would otherwise be lost.

Claims (48)

1. A method of repairing damage to a file system, the method comprising:

accessing a segment in the file system, the segment including multiple compressed extents and extending over a contiguous range of multiple blocks in the file system, each compressed extent storing compressed data of a respective portion of a file in the file system and having an associated compression header, the file system providing a respective metadata path from an inode of the file to each of the compressed extents;

accessing, from the segment, a first compression header associated with a first compressed extent, to obtain a data element stored in the first compression header, the data element storing a compressed length of the first compressed extent; and

correcting damage in a metadata path from the inode to the first compressed extent by applying the data element obtained from the first compression header,

wherein the metadata path from the inode to the first compressed extent includes a mapping structure stored separately from the segment, the mapping structure including an extent list that stores per-extent metadata fields for each of the multiple compressed extents in the segment, the per-extent metadata fields for the first extent including a field that stores a separate version of the compressed length of the first compressed extent, and

wherein the method further comprises (i) detecting a mismatch between (a) the separate version of the compressed length in the extent list and (b) the compressed length obtained from the first compression header and (ii) replacing the separate version of the compressed length in the extent list with a version based on the compressed length obtained from the first compression header.

2. The method of claim 1 , further comprising, after detecting the mismatch:

identifying a set of compressed extents located in the segment after the first compressed extent; and

for each of the set of compressed extents, replacing a respective version of the compressed length of that extent in the extent list with a version based on a compressed length obtained from the respective compression header.

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

accessing a segment in the file system, the segment including multiple compressed extents and extending over a contiguous range of multiple blocks in the file system, each compressed extent having a pre-compressed size of one block, storing compressed data of a respective portion of a file in the file system, and having an associated compression header, the file system providing a respective metadata path from an inode of the file to each of the compressed extents;

accessing, from the segment, a first compression header associated with a first compressed extent, to obtain a data element stored in the first compression header, the data element including a logical block address at which the compressed data of the first compressed extent is logically located within the file; and

correcting damage in a metadata path from the inode to the first compressed extent by applying the data element obtained from the first compression header,

wherein the metadata path from the inode to the first compressed extent includes a mapping structure stored separately from the segment, the mapping structure including an extent list that stores per-extent metadata fields for each of the multiple compressed extents in the segment, the per-extent metadata fields for the first extent including a field that stores a separate version of the logical block address of the compressed data stored in the first compressed extent, and

wherein the method further comprises (i) detecting a mismatch between (a) the separate version of the logical block address in the extent list and (b) the logical block address obtained from the first compression header and (ii) replacing the separate version of the logical block address in the extent list with the logical block address obtained from the first compression header.

4. The data storage system of claim 3 , wherein the method further comprises, after detecting the mismatch:

identifying a set of compressed extents located in the segment after the first compressed extent; and

for each of the set of compressed extents, replacing a respective logical block address in the extent list with a logical block address obtained from the respective compression header.

5. The data storage system of claim 3 ,

wherein the method further comprises, in response to detecting that multiple logical block addresses for respective extents in the extent list are identical, replacing the multiple logical block addresses in the extent list with corresponding logical block addresses obtained from respective compression headers in the segment.

6. 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 storing data, the method comprising:

accessing a segment in the file system, the segment including multiple compressed extents and extending over a contiguous range of multiple blocks in the file system, each compressed extent storing compressed data of a respective portion of a file in the file system and having an associated compression header, the file system providing a respective metadata path from an inode of the file to each of the compressed extents;

accessing, from the segment, a first compression header associated with a first compressed extent, to obtain a data element stored in the first compression header; and

correcting damage in a metadata path from the inode to the first compressed extent by applying the data element obtained from the first compression header,

wherein the damaged metadata path from the inode to the first compressed extent includes a damaged block pointer to the segment in a mapping structure, such that the file system cannot locate the segment using the mapping structure, and wherein the method further comprises:

providing a new mapping structure to replace the mapping structure having the damaged block pointer;

populating an extent list of the new mapping structure with data elements obtained from the compression headers associated with the compressed extents in the segment; and

writing, to a block pointer field in the mapping structure, a pointer value that points to the segment.

7. The computer program product of claim 6 , wherein the data elements in each compression header include a length of the compressed extent and a logical block address at which the compressed extent resides in the file, such that populating the extent list includes storing, in a set of per-extent metadata fields for each compressed extent, the length and the logical block address of that compressed extent.

8. The computer program product method of claim 7 , wherein the file system includes block pointers to the damaged mapping structure, and wherein the method further comprises updating the block pointers to the damaged mapping structure to point to the new mapping structure.

9. The computer program product of claim 8 , wherein the segment has associated metadata that includes a back-pointer to the mapping structure, and wherein the method further comprises updating the back-pointer to point to the new mapping structure.

10. The computer program product of claim 6 ,

wherein the data element obtained from the first compression header stores a compressed length of the first compressed extent,

wherein the metadata path from the inode to the first compressed extent includes a mapping structure stored separately from the segment, the mapping structure including an extent list that stores per-extent metadata fields for each of the multiple compressed extents in the segment, the per-extent metadata fields for the first extent including a field that stores a separate version of the compressed length of the first compressed extent, and

wherein the method further comprises (i) detecting a mismatch between (a) the separate version of the compressed length in the extent list and (b) the compressed length obtained from the first compression header and (ii) replacing the separate version of the compressed length in the extent list with a version based on the compressed length obtained from the first compression header.

11. The computer program product of claim 6 ,

wherein each compressed extent in the segment has a pre-compressed size of one block,

wherein the data element stored in the first compression header includes a logical block address at which the compressed data of the first compressed extent is logically located within the file,

wherein the metadata path from the inode to the first compressed extent includes a mapping structure stored separately from the segment, the mapping structure including an extent list that stores per-extent metadata fields for each of the multiple compressed extents in the segment, the per-extent metadata fields for the first extent including a field that stores a separate version of the logical block address of the compressed data stored in the first compressed extent, and

wherein the method further comprises (i) detecting a mismatch between (a) the separate version of the logical block address in the extent list and (b) the logical block address obtained from the first compression header and (ii) replacing the separate version of the logical block address in the extent list with the logical block address obtained from the first compression header.

12. The computer program product of claim 11 , wherein the method further comprises, after detecting the mismatch:

identifying a set of compressed extents located in the segment after the first compressed extent; and

for each of the set of compressed extents, replacing a respective logical block address in the extent list with a logical block address obtained from the respective compression header.

13. The computer program product of claim 6 ,

wherein each compressed extent in the segment has a pre-compressed size of one block,

wherein the data element stored in the first compression header includes a logical block address at which the compressed data of the first compressed extent is logically located in the file,

wherein the metadata path from the inode to the first compressed extent includes a mapping structure stored separately from the segment, the mapping structure including an extent list that stores per-extent metadata fields for each of the multiple compressed extents in the segment, the per-extent metadata fields for the first extent including a field that stores a separate version of the logical block address of the compressed data stored in the first compressed extent, and

wherein the method further comprises, in response to detecting that multiple logical block addresses for respective extents in the extent list are identical, replacing the multiple logical block addresses in the extent list with corresponding logical block addresses obtained from respective compression headers in the segment.

Assignments (9)
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 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 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 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 →
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 Apr 4, 2018
From: FANG, FRANKIE WEI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045435/0358 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2017
From: KUANG, YAMING; HUANG, WEILI; WU, HANSI; DESOUTER, MARC; BASSOV, IVAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041279/0921 →