US 8,549,051 B2
Unlimited file system snapshots and clones
Matthew A. Ahrens, San Francisco, Calif. (US); Mark J. Maybee, Boulder, Colo. (US); and Jeffrey S. Bonwick, Los Altos, Calif. (US)
Assigned to Oracle America, Inc., Redwood Shores, Calif. (US)
Filed by Matthew A. Ahrens, San Francisco, Calif. (US); Mark J. Maybee, Boulder, Colo. (US); and Jeffrey S. Bonwick, Los Altos, Calif. (US)
Filed on Aug. 31, 2006, as Appl. No. 11/513,800.
Claims priority of provisional application 60/734,039, filed on Nov. 4, 2005.
Prior Publication US 2007/0106706 A1, May 10, 2007
Int. Cl. G06F 12/00 (2006.01); G06F 17/30 (2006.01)
U.S. Cl. 707—829 11 Claims
OG exemplary drawing
 
1. A non-transitory computer readable storage medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to perform a method for creating a snapshot of a hierarchical block tree (HBT), said method comprising:
obtaining a copy of a first version of a root block of the HBT prior to overwriting the first version of the root block with a second version of the root block;
designating the copy of a first version of a root block as a root block of the snapshot;
associating an existing dead list of the HBT with the snapshot, wherein the existing dead list specifies a block referenced in a second snapshot and not currently referenced in the snapshot, wherein the second snapshot is associated with the HBT and is created prior to the snapshot;
overwriting the first version of the root block with a second version of the root block;
associating the HBT with an empty dead list, wherein the HBT comprises the second version of the root block; and
updating the empty dead list associated with the HBT, wherein the empty dead list is updated when a first block referenced by the root block of the snapshot ceases to be referenced by the second version of the root block, wherein updating the empty dead list associated with the HBT comprises adding a block pointer associated with the first block and a birth time of the first block to the empty dead list.