Check out the new USENIX Web site. next up previous
Next: Dealing with Imperfection Up: Graceful Degradation Previous: Writes

Block Reuse

We now discuss a few of the more intricate issues involved with implementing graceful degradation. The first such issue is block reuse. As existing files are deleted or truncated and new files are created, blocks that were once part of one file may be reallocated to some other file. Since D-GRAID needs to place blocks onto the correct home site, this reuse of blocks needs to be detected and acted upon. D-GRAID handles block reuse in the following manner: whenever an inode block or an indirect block is written, D-GRAID examines each valid block pointer to see if its physical block mapping matches the home site allocated for the corresponding inode. If not, D-GRAID changes the mapping for the block to the correct home site. However, it is possible that a write to this block (that was made in the context of the new file) went to the old home site, and hence needs to be copied from its old physical location to the new location. Blocks that must be copied are added to a pending copies list; a background thread copies the blocks to their new home site and frees the old physical locations when the copy completes.



next up previous
Next: Dealing with Imperfection Up: Graceful Degradation Previous: Writes
Muthian Sivathanu 2004-02-17