Ditto blocks
First Claim
Patent Images
1. A method for storing a data block in a storage pool, comprising:
- receiving a write operation for the data block;
writing the data block into the storage pool;
determining a first indirect block to store in the storage pool, wherein the first indirect block comprises a first block pointer that references the data block;
writing the first indirect block to a first location in the storage pool;
creating a copy of the first indirect block;
writing the copy of first indirect block to a second location in the storage pool, wherein the copy of the first indirect block comprises a second block pointer that references the data block; and
writing a second indirect block into the storage pool, wherein the second indirect block comprises a third block pointer that references both the first indirect block and the copy of the first indirect block.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for storing a data block in a storage pool, including receiving a write operation for the data block, writing the data block into the storage pool, determining a first indirect block to store in the storage pool, wherein the first indirect block references the data block, writing the first indirect block to a first location in the storage pool, creating a copy of the first indirect block, and writing the copy of first indirect block to a second location in the storage pool.
61 Citations
15 Claims
-
1. A method for storing a data block in a storage pool, comprising:
-
receiving a write operation for the data block; writing the data block into the storage pool; determining a first indirect block to store in the storage pool, wherein the first indirect block comprises a first block pointer that references the data block; writing the first indirect block to a first location in the storage pool; creating a copy of the first indirect block; writing the copy of first indirect block to a second location in the storage pool, wherein the copy of the first indirect block comprises a second block pointer that references the data block; and writing a second indirect block into the storage pool, wherein the second indirect block comprises a third block pointer that references both the first indirect block and the copy of the first indirect block. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A system, comprising:
-
a storage pool comprising; a plurality of child blocks, wherein each of the plurality of child blocks comprises one selected from the group consisting of a data block and an indirect block, wherein each of the indirect blocks references at least one of the plurality of child blocks; and a parent block referencing at least one indirect block; and a storage pool allocator configured to store the parent block and the plurality of child blocks, wherein the at least one indirect block is stored in a first location and a copy of the at least one indirect block is stored in a second location in the storage pool, wherein the at least one indirect block references a data block, wherein the data block is one of the plurality of child blocks, wherein the copy of the at least one indirect block references the data block, and wherein the first location and the second location are stored in a single block pointer of the parent block referencing the at least one indirect block. - View Dependent Claims (7, 8)
-
-
9. A method for reading data in a storage pool, comprising:
-
obtaining a first location of a first indirect block from a block pointer of a parent block;
determining whether the first indirect block can be retrieved from the first location;
when the first indirect block cannot be retrieved from the first location;obtaining a second location of the first indirect block from the block pointer of the parent block, wherein the second location comprises a copy of the first indirect block; and retrieving the first indirect block from the second location, and retrieving the first indirect block from the first location, when the first indirect block can be retrieved from the first location, wherein the first indirect block comprises a first block pointer referencing a child block, and the copy of the first indirect block comprises a second block pointer referencing the child block. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
Specification