IP Library Granted Patent US 10,146,466
Granted Patent B1
US 10,146,466 · App. 15/499,488 · Granted Dec 4, 2018

Merging mapping metadata to promote reference counting efficiency

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,146,466
App. No.
15/499,488
Granted
Dec 4, 2018
Kind
B1
Abstract

A technique for managing metadata in a data storage system designates block pointers as either sources or copies, where sources contribute to reference counts of pointed-to structures but copies do not. The technique maintains parent-child relationships between parent BPSs (block pointer sets) and child BPSs, where each BPS includes an array of block pointers. Each child BPS is created as a copy of a parent BPS and has block pointers initially designated as copies. The technique performs a metadata-merge operation to merge the block pointers of the parent BPS into those of a child BPS by promoting attributes of block pointers in the child BPS from copy to source, avoiding any need to perform reference count updates on structures pointed to by promoted block pointers.

Claims (62)

1. A method of managing metadata in a data storage system, the method comprising:

maintaining (i) a parent BPS (block pointer set) for mapping a base range of a storage object and (ii) a child BPS for mapping a logical copy of the base range, each BPS including multiple block pointers that map data of the respective range, each block pointer having an attribute that indicates whether that block pointer is a source or a copy, the block pointers in each child BPS initially designated as copies when that child BPS is created;

maintaining reference counts on lower-level mapping structures pointed to by the block pointers of the parent BPS and the child BPS, the reference count for each lower-level mapping structure counting a number of source block pointers pointing to that mapping structure and being unaffected by any copy block pointers that also point to that lower-level mapping structure; and

subsequent to the parent BPS becoming inaccessible from a namespace of the data storage system, performing a metadata-merge operation between the parent BPS and the child BPS, the metadata-merge operation (i) updating each copy block pointer at a respective pointer location in the child BPS to a source, in response to a block pointer at the corresponding location in the parent BPS being a source, and (ii) invalidating, in the parent BPS, the block pointer corresponding to each updated block pointer in the child BPS, the metadata-merge operation thereby transferring reference-counted source attributes from the parent BPS to the child BPS without updating reference counts of lower-level mapping structures pointed to by the updated block pointers.

2. The method of claim 1 , wherein the parent BPS is part of a parent BPS tree that includes the parent BPS and multiple lower-level BPS's that provide lower-level mapping structures of the parent BPS, and wherein the block pointers in the parent BPS point to the lower-level BPS's in the parent BPS tree.

3. The method of claim 2 , wherein the child BPS is a sole child BPS of the parent BPS, such that the parent BPS has no other child BPS's.

4. The method of claim 3 , further comprising performing a cleanup operation, the cleanup operation including:

identifying a set of unique source block pointers in the parent BPS, which are not invalidated by the metadata-merge operation; and

for each of the set of unique source block pointers, decrementing the reference count of a respective lower-level BPS pointed to by that unique source block pointer.

5. The method of claim 4 , wherein performing the cleanup operation further includes, in response to the decremented reference count of a lower-level BPS indicating zero references, freeing that lower-level BPS such that it is no longer used to map the base range.

6. The method of claim 4 , wherein the child BPS has a parent field configured to store a quasi-physical address of the parent BPS, and wherein performing the cleanup operation further includes:

freeing the parent BPS such that it is no longer used to map the base range; and

deleting or otherwise invalidating the quasi-physical address of the parent BPS from the parent field of the child BPS.

7. The method of claim 1 ,

wherein the child BPS is a first child BPS created along with a second child BPS as part of a copy-copy-delete operation that created the first and second child BPS's and orphaned the parent BPS, such that the parent BPS became inaccessible from a namespace of the data storage system, and

wherein the metadata-merge operation is performed in response to a parent-child relationship being severed between the parent BPS and the second child BPS.

8. The method of claim 7 , the parent-child relationship is severed between the parent BPS and the second child BPS in response to one of (i) the second child BPS being deleted or (ii) the second child BPS being entirely overwritten.

9. The method of claim 1 , further comprising:

providing the parent BPS in a first block of a quasi-physical address space of the data storage system; and

providing the child BPS in a second block of the quasi-physical address space,

wherein each of the first block and the second block includes:

(i) multiple block pointer fields, each block pointer field configured to store an address in the quasi-physical address space of a pointed-to structure and an attribute field configured to identify the block pointer as a source or a copy;

(ii) a reference count field configured to indicate a number of source block pointers that point to the respective block;

(iii) a parent field configured to identify a quasi-physical address of another BPS from which the BPS in the respective block was copied; and

(iv) at least one child field configured to identify a quasi-physical address of another BPS that was created as a copy of the BPS in the respective block.

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

maintain (i) a parent BPS (block pointer set) for mapping a base range of a storage object and (ii) a child BPS for mapping a logical copy of the base range, each BPS including multiple block pointers that map data of the respective range, each block pointer having an attribute that indicates whether that block pointer is a source or a copy, the block pointers in each child BPS initially designated as copies when that child BPS is created;

maintain reference counts on lower-level mapping structures pointed to by the block pointers of the parent BPS and the child BPS, the reference count for each lower-level mapping structure counting a number of source block pointers pointing to that mapping structure and being unaffected by any copy block pointers that also point to that lower-level mapping structure; and

subsequent to the parent BPS becoming inaccessible from a namespace of the data storage system, perform a metadata-merge operation between the parent BPS and the child BPS, the metadata-merge operation (i) updating each copy block pointer at a respective pointer location in the child BPS to a source, in response to a block pointer at the corresponding location in the parent BPS being a source, and (ii) invalidating, in the parent BPS, the block pointer corresponding to each updated block pointer in the child BPS, the metadata-merge operation thereby transferring reference-counted source attributes from the parent BPS to the child BPS without updating reference counts of lower-level mapping structures pointed to by the updated block pointers.

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

provide the parent BPS in a first block of a quasi-physical address space of the data storage system; and

provide the child BPS in a second block of the quasi-physical address space,

wherein each of the first block and the second block includes:

(i) multiple block pointer fields, each block pointer field configured to store an address in the quasi-physical address space of a pointed-to structure and an attribute field configured to identify the block pointer as a source or a copy;

(ii) a reference count field configured to indicate a number of source block pointers that point to the respective block;

(iii) a parent field configured to identify a quasi-physical address of another BPS from which the BPS in the respective block was copied; and

(iv) at least one child field configured to identify a quasi-physical address of another BPS that was created as a copy of the BPS in the respective block.

12. 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 of managing metadata, the method comprising:

maintaining (i) a parent BPS (block pointer set) for mapping a base range of a storage object and (ii) a child BPS for mapping a logical copy of the base range, each BPS including multiple block pointers that map data of the respective range, each block pointer having an attribute that indicates whether that block pointer is a source or a copy, the block pointers in each child BPS initially designated as copies when that child BPS is created;

maintaining reference counts on lower-level mapping structures pointed to by the block pointers of the parent BPS and the child BPS, the reference count for each lower-level mapping structure counting a number of source block pointers pointing to that mapping structure and being unaffected by any copy block pointers that also point to that lower-level mapping structure; and

subsequent to the parent BPS becoming inaccessible from a namespace of the data storage system, performing a metadata-merge operation between the parent BPS and the child BPS, the metadata-merge operation (i) updating each copy block pointer at a respective pointer location in the child BPS to a source, in response to a block pointer at the corresponding location in the parent BPS being a source, and (ii) invalidating, in the parent BPS, the block pointer corresponding to each updated block pointer in the child BPS, the metadata-merge operation thereby transferring reference-counted source attributes from the parent BPS to the child BPS without updating reference counts of lower-level mapping structures pointed to by the updated block pointers.

13. The computer program product of claim 12 , wherein the parent BPS is part of a parent BPS tree that includes the parent BPS and multiple lower-level BPS's that provide lower-level mapping structures of the parent BPS, and wherein the block pointers in the parent BPS point to the lower-level BPS's in the parent BPS tree.

14. The computer program product of claim 13 , wherein the child BPS is a sole child BPS of the parent BPS, such that the parent BPS has no other child BPS's.

15. The computer program product of claim 14 , wherein the method further comprises performing a cleanup operation, the cleanup operation including:

identifying a set of unique source block pointers in the parent BPS, which are not invalidated by the metadata-merge operation; and

for each of the set of unique source block pointers, decrementing the reference count of a respective lower-level BPS pointed to by that unique source block pointer.

16. The computer program product of claim 15 , wherein performing the cleanup operation further includes, in response to the decremented reference count of a lower-level BPS indicating zero references, freeing that lower-level BPS such that it is no longer used to map the base range.

17. The computer program product of claim 15 , wherein the child BPS has a parent field configured to store a quasi-physical address of the parent BPS, and wherein performing the cleanup operation further includes:

freeing the parent BPS such that it is no longer used to map the base range; and

deleting or otherwise invalidating the quasi-physical address of the parent BPS from the parent field of the child BPS.

18. The computer program product of claim 12 ,

wherein the child BPS is a first child BPS created along with a second child BPS as part of a copy-copy-delete operation that created the first and second child BPS's and orphaned the parent BPS, such that the parent BPS became inaccessible from a namespace of the data storage system, and

wherein the metadata-merge operation is performed in response to a parent-child relationship being severed between the parent BPS and the second child BPS.

19. The computer program product of claim 18 , the parent-child relationship is severed between the parent BPS and the second child BPS in response to one of (i) the second child BPS being deleted or (ii) the second child BPS being entirely overwritten.

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

providing the parent BPS in a first block of a quasi-physical address space of the data storage system; and

providing the child BPS in a second block of the quasi-physical address space,

wherein each of the first block and the second block includes:

(i) multiple block pointer fields, each block pointer field configured to store an address in the quasi-physical address space of a pointed-to structure and an attribute field configured to identify the block pointer as a source or a copy;

(ii) a reference count field configured to indicate a number of source block pointers that point to the respective block;

(iii) a parent field configured to identify a quasi-physical address of another BPS from which the BPS in the respective block was copied; and

(iv) at least one child field configured to identify a quasi-physical address of another BPS that was created as a copy of the BPS in the respective block.

Assignments (10)
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 (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 →
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 Nov 30, 2017
From: PUHOV, PETER
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044266/0590 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2017
From: DAVENPORT, WILLIAM C.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043665/0162 →
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 6, 2017
From: RUEF, RICHARD P.; CHEN, LILI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042615/0769 →