IP Library Granted Patent US 11,016,884
Granted Patent B2
US 11,016,884 · App. 16/508,472 · Granted May 25, 2021

Virtual block redirection clean-up

Inventors: Alex Soukhman (Raanana, IL); Vladimir Shveidel (Pardes-Hana, IL); Ronen Gazit (Tel Aviv, IL); Uri Shabi (Tel Mond, IL)
Assignee: EMC IP Holding Company LLC
G06F12/0292G06F3/0608G06F3/0652G06F3/0665G06F3/0673
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 11,016,884
App. No.
16/508,472
Granted
May 25, 2021
Kind
B2
Abstract

Virtual block redirection clean-up is accomplished for a virtual block in a mapper tree for a logical volume that is redirected to a destination virtual block in the mapper tree. In response to redirection of the virtual block, a redirection notification is sent to each component in a set of dependent components. Each dependent component may store one or more pointers to pointers located within virtual blocks of the mapper tree. The redirected virtual block is cleaned up in response to determining that each dependent component has expressly indicated, in response to the redirection notification, that it does not store any pointer to any pointer that is located within the redirected virtual block.

Claims (52)

1. A method comprising:

redirecting a virtual block in a mapper tree for a logical volume to a destination virtual block in the mapper tree;

in response to redirecting the virtual block, sending a redirection notification to each component in a set of dependent components, wherein each dependent component stores one or more pointers to pointers located within virtual blocks of the mapper tree; and

cleaning up the redirected virtual block in response to determining that each dependent component has expressly indicated, in response to the redirection notification, that it does not store any pointer to any pointer that is located within the redirected virtual block.

2. The method of claim 1 , wherein the redirection notification identifies both the redirected virtual block and the destination virtual block; and

wherein receipt of the redirection notification by each dependent component causes the dependent component to replace at least one previously stored pointer to a pointer located within the redirected virtual block with a pointer to a pointer located within the destination virtual block.

3. The method of claim 2 , wherein determining that each dependent component has indicated that it does not store any pointer to any pointer located within the redirected virtual block comprises receiving an acknowledgement to the redirection notification from each dependent component indicating that the dependent component has replaced all pointers to pointers located within the redirected virtual block that were previously stored by the dependent component with pointers to pointers located within the destination virtual block.

4. The method of claim 3 , further comprising:

in response to redirection of the virtual block, adding a total number of dependent components in the set of dependent components to a total references counter for the redirected virtual block; and

decrementing the total references counter at least in response to receipt of each acknowledgement to the redirection notification; and

wherein determining that each dependent component has indicated that it does not store any pointer to any pointer located within the redirected virtual block comprises detecting that the total references counter for the redirected virtual block has a value of zero.

5. The method of claim 4 , further comprising:

adding a total number of pointers stored in leaf nodes of the mapper tree that point to pointers located within the redirected virtual block to the total references counter for the virtual block; and

decrementing the total references counter for the virtual block each time a pointer in a leaf node of the mapper tree that points to a pointer that is located within the redirected virtual block is replaced with a pointer to a pointer that is located within the destination virtual block.

6. The method of claim 5 , further comprising replacing pointers in leaf nodes of the mapper tree that point to pointers located within the redirected virtual block with pointers to pointers located within the destination virtual block while traversing the mapper tree to process reads of the logical volume.

7. The method of claim 6 , further comprising replacing pointers in leaf nodes of the mapper tree that point to pointers located within the redirected virtual block with pointers to pointers located within the destination virtual block in a background process.

8. The method of claim 3 , further comprising:

in response to redirection of the virtual block, setting all bits in a bit map, wherein the bit map includes a bit corresponding to each one of the dependent components in the set of dependent components; and

clearing a bit in the bit map corresponding to one of the dependent components in the set of dependent components in response to receipt of an acknowledgement to the redirection notification from that dependent component; and

wherein determining that each dependent component has indicated that it does not store any pointer to any pointer located within the redirected virtual block comprises detecting that all bits in the bit map have been cleared.

9. The method of claim 1 , wherein redirecting the virtual block comprises adding redirection information to the virtual block indicating the destination virtual block; and

wherein cleaning up the redirected virtual block comprises deleting the redirection information from the redirected virtual block.

10. The method of claim 9 , wherein the redirection information further comprises an offset into the destination virtual block at which are stored, within the destination virtual block, a plurality of pointers to pages located in a physical block corresponding to the destination virtual block, wherein the pages located in the physical block corresponding to the destination virtual block store host data that was previously moved from physical pages located in a physical block corresponding to the redirected virtual block.

11. The method of claim 1 , wherein the virtual block is redirected in response to moving host data from at least one page in a physical block corresponding to the redirected virtual block to at least one page in a physical block corresponding to the destination virtual block by a defragmentation component.

12. A data storage system, comprising:

processing circuitry and memory coupled to the processing circuitry, the memory storing instructions, wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to:

redirect a virtual block in a mapper tree for a logical volume to a destination virtual block in the mapper tree;

in response to redirecting the virtual block, send a redirection notification to each component in a set of dependent components, wherein each dependent component stores one or more pointers to pointers located within virtual blocks of the mapper tree; and

clean up the redirected virtual block in response to determining that each dependent component has expressly indicated, in response to the redirection notification, that it does not store any pointer to any pointer that is located within the redirected virtual block.

13. The data storage system of claim 12 , wherein the redirection notification identifies both the redirected virtual block and the destination virtual block; and

wherein receipt of the redirection notification by each dependent component causes the dependent component to replace at least one previously stored pointer to a pointer located within the redirected virtual block with a pointer to a pointer located within the destination virtual block.

14. The data storage system of claim 13 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

determine that each dependent component has indicated that it does not store any pointer to any pointer located within the redirected virtual block at least in part by receipt of an acknowledgement to the redirection notification from each dependent component indicating that the dependent component has replaced all pointers to pointers located within the redirected virtual block that were previously stored by the dependent component with pointers to pointers located within the destination virtual block.

15. The data storage system of claim 14 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

in response to redirection of the virtual block, add a total number of dependent components in the set of dependent components to a total references counter for the redirected virtual block; and

decrement the total references counter at least in response to receipt of each acknowledgement to the redirection notification; and

determine that each dependent component has indicated that it does not store any pointer to any pointer located within the redirected virtual block at least in part by detecting that the total references counter for the redirected virtual block has a value of zero.

16. The data storage system of claim 15 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

add a total number of pointers stored in leaf nodes of the mapper tree that point to pointers located within the redirected virtual block to the total references counter for the virtual block; and

decrement the total references counter for the virtual block each time a pointer in a leaf node of the mapper tree that points to a pointer that is located within the redirected virtual block is replaced with a pointer to a pointer that is located within the destination virtual block.

17. The data storage system of claim 16 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

replace pointers in leaf nodes of the mapper tree that point to pointers located within the redirected virtual block with pointers to pointers located within the destination virtual block while traversing the mapper tree to process reads of the logical volume; and

replace pointers in leaf nodes of the mapper tree that point to pointers located within the redirected virtual block with pointers to pointers located within the destination virtual block in a background process.

18. The data storage system of claim 12 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

redirect the virtual block at least in part by addition of redirection information to the virtual block indicating the destination virtual block; and

clean up the redirected virtual block at least in part by deletion of the redirection information from the redirected virtual block.

19. The data storage system of claim 18 , wherein the redirection information further comprises an offset into the destination virtual block at which are stored, within the destination virtual block, a plurality of pointers to pages located in a physical block corresponding to the destination virtual block, wherein the pages located in the physical block corresponding to the destination virtual block store host data that was previously moved from physical pages located in a physical block corresponding to the redirected virtual block.

20. A computer program product, comprising:

a non-transitory, computer-readable medium having instructions stored thereon that, when executed by processing circuitry in a data storage system, cause the processing circuitry to perform a method comprising the steps of:

redirecting a virtual block in a mapper tree for a logical volume to a destination virtual block in the mapper tree;

in response to redirecting the virtual block, sending a redirection notification to each component in a set of dependent components, wherein each dependent component stores one or more pointers to pointers located within virtual blocks of the mapper tree; and

cleaning up the redirected virtual block in response to determining that each dependent component has expressly indicated, in response to the redirection notification, that it does not store any pointer to any pointer that is located within the redirected virtual block.

Assignments (9)
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 (053311/0169) 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 CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) 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 CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 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 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
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 053311/0169 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2019
From: SOUKHMAN, ALEX; SHVEIDEL, VLADIMIR; GAZIT, RONEN; SHABI, URI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050009/0261 →