US 11,748,300 B2
Reverse deletion of a chain of snapshots
Enning Xiang, San Jose, CA (US); Wenguang Wang, Santa Clara, CA (US); and Pranay Singh, San Ramon, CA (US)
Assigned to VMware, Inc., Palo Alto, CA (US)
Filed by VMware, Inc., Palo Alto, CA (US)
Filed on Nov. 18, 2021, as Appl. No. 17/455,519.
Prior Publication US 2023/0153269 A1, May 18, 2023
Int. Cl. G06F 16/11 (2019.01); G06F 16/14 (2019.01)
CPC G06F 16/128 (2019.01) [G06F 16/125 (2019.01); G06F 16/14 (2019.01)] 17 Claims
OG exemplary drawing
 
1. A method for a reverse deletion of a plurality of snapshots in a chain of snapshots, the method comprising:
in reverse order, starting from a latest snapshot in time of the plurality of snapshots to an earliest snapshot in time of the plurality of snapshots:
identifying at least one of a first set of one or more data blocks of a snapshot that are shared with an earlier snapshot in time in the chain of snapshots or a second set of one or more data blocks of the snapshot that are owned by the snapshot, wherein:
each data block in the first set of one or more data block and the second set of one or more data blocks is referenced by a logical block address (LBA) and a physical block address (PBA) corresponding to a physical block where each data block is written;
a logical map associated with the snapshot includes an entry for each data block in the first set of one or more data blocks and the second set of one or more data blocks, the logical map mapping the LBA of each data block to a middle block address (MBA) and a middle map including an entry that maps the MBA to the PBA of each data block;
each of the plurality of snapshots is associated with a minimum MBA; and
identifying the first set of one or more data blocks comprises identifying data blocks having an MBA less than the minimum MBA associated with the snapshot; and
processing the second set of one or more data blocks and skipping processing the first set of one or more data blocks, wherein processing the second set of one or more data blocks comprises:
determining which data blocks of the second set of one or more data blocks are shared with a later snapshot in time in the chain of snapshots and which data blocks of the second set of one or more data blocks are exclusively owned by the snapshot; and
performing one or more actions on the second set of one or more data blocks based on the determination.