Verifying the consistency of slice allocation metadata
US-9152353-B1 · Oct 6, 2015 · US
US9916191B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9916191-B1 |
| Application number | US-201414576450-A |
| Country | US |
| Kind code | B1 |
| Filing date | Dec 19, 2014 |
| Priority date | Dec 19, 2014 |
| Publication date | Mar 13, 2018 |
| Grant date | Mar 13, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A method of efficiently checking a filesystem for errors is provided, the filesystem including a set of data blocks and a set of VBPs, the set of VBPs arranged in a set of VBP blocks, each VBP block storing a plurality of the VBPs. The method includes multiple stages, one stage including iterating through VBP blocks of the filesystem to generate a validity bitmap, and a later stage including traversing a block pointer structure associated with each of a set of files of the filesystem, the traversal making reference to the validity bitmap.
Opening claim text (preview).
What is claimed is: 1. A method of efficiently checking a filesystem for errors, the filesystem including a set of data blocks and a set of virtual block pointers (VBPs), the set of VBPs arranged in a set of VBP blocks, each VBP block storing a plurality of the VBPs, the method comprising: iterating through the set of VBP blocks and, for each VBP block of the set of VBP blocks: loading that VBP block from the filesystem into cache; loading metadata that describes that VBP block from the filesystem into cache unless the metadata that describes that VBP block is already present in the cache; calculating a check value for that VBP block; comparing the calculated check value for that VBP block with an expected check value for that VBP block as stored in the cached metadata that describes that VBP block; for VBP blocks for which the comparison fails, marking, within a validity bitmap, entries corresponding to all VBPs in those VBP blocks as invalid; and for VBP blocks for which the comparison succeeds, for each owner VBP stored within those VBP blocks, performing a consistency check on that owner VBP, the consistency check yielding a valid or invalid validity result, and marking, within the validity bitmap, an entry corresponding to that owner VBP indicating the validity result from the consistency check for that owner VBP, wherein an owner VBP is a VBP that points directly to a data block rather than to another VBP; after iterating through the set of VBP blocks, traversing a block pointer structure associated with each of a set of files of the filesystem, each block pointer structure pointing to a set of owner VBPs that indicate which data blocks of the filesystem are part of a file; and returning an error based on whether any of the owner VBPs pointed to by any of the traversed block pointer structures correspond to an entry within the validity bitmap marked as invalid. 2. The method of claim 1 wherein for VBP blocks for which the comparison succeeds, for each owner VBP stored within those VBP blocks, performing the consistency check on that owner VBP includes: reading metadata associated with a data block directly pointed to by that owner VBP to identify a recorded owner VBP of that data block; for VBP blocks for which the identified recorded owner VBP of the data block pointed to by that owner VBP is the same as that owner VBP itself, yielding a valid result; and otherwise, yielding an invalid result. 3. The method of claim 1 wherein iterating through the set of VBP blocks is performed in an order such that VBP blocks having metadata in adjacent locations are loaded in temporal proximity to each other. 4. The method of claim 1 wherein returning the error based on whether any of the owner VBPs pointed to by any of the traversed block pointer structures correspond to an entry within the validity bitmap marked as invalid includes returning a set of errors, the errors of the set of errors respectively indicating which files of the filesystem are associated with a block pointer structure which points to at least one owner VBP that corresponds to an entry within the validity bitmap marked as invalid. 5. The method of claim 4 wherein: the filesystem is a container filesystem, each file of the container filesystem representing a logical disk; and an error for a file of the container filesystem indicates that there is an error within the logical disk. 6. The method of claim 5 wherein the logical disk provides a realization of one of: a block-based logical disk (LUN); an upper-deck filesystem; a virtual volume (vVol); and a snapshot of a previous state of one of the above. 7. The method of claim 6 wherein at least a first VBP pointed to by the block pointer structure of a first file of the container filesystem points to a second VBP also pointed to by the block pointer structure of a second file of the container filesystem, the first file representing a LUN and the second file representing a snapshot of a previous state of the LUN. 8. The method of claim 5 wherein deduplication is enabled for at least one file of the container filesystem, at least a first VBP pointed to by the block pointer structure of the file pointing to a second VBP also pointed to by the block pointer structure. 9. The method of claim 4 wherein deduplication is enabled for the container filesystem, at least a first VBP pointed to by the block pointer structure of a first file of the container filesystem pointing to a second VBP also pointed to by the block pointer structure of a second file of the container filesystem. 10. The method of claim 5 wherein: the container filesystem is thinly-provisioned; and iterating through the set of VBP blocks includes iterating only through VBP blocks that have already been allocated to the container filesystem. 11. The method of claim 1 wherein a VBP is defined to be a data structure including a pointer to one of a data block and another VBP. 12. The method of claim 1 wherein each VBP block is loaded into the cache only once as part of checking the filesystem for errors. 13. A computer program product comprising a non-transitory computer-readable storage medium, which stores a set of instructions, which, when executed by a computing device, cause the computing device to check a filesystem for errors, the filesystem including a set of data blocks and a set of virtual block pointers (VBPs), the set of VBPs arranged in a set of VBP blocks, each VBP block storing a plurality of the VBPs, checking the filesystem for errors including: iterating through the set of VBP blocks and, for each VBP block of the set of VBP blocks: loading that VBP block from the filesystem into cache; loading metadata that describes that VBP block from the filesystem into the cache unless the metadata that describes that VBP block is already present in the cache; calculating a check value for that VBP block; comparing the calculated check value for that VBP block with an expected check value for that VBP block as stored in the cached metadata that describes that VBP block; for VBP blocks for which the comparison fails, marking, within a validity bitmap, entries corresponding to all VBPs in those VBP blocks as invalid; and for VBP blocks for which the comparison succeeds, for each owner VBP stored within those VBP blocks, performing a consistency check on that owner VBP, the consistency check yielding a valid or invalid validity result, and marking, within the validity bitmap, an entry corresponding to that owner VBP indicating the validity result from the consistency check for that owner VBP, wherein an owner VBP is a VBP that points directly to a data block rather than to another VBP; after iterating through the set of VBP blocks, traversing a block pointer structure associated with each of a set of files of the filesystem, each block pointer structure pointing to a set of owner VBPs that indicate which data blocks of the filesystem are part of a file; and returning an error based on whether any of the owner VBPs pointed to by any of the traversed block pointer structures correspond to an entry within the validity bitmap marked as invalid. 14. The computer program product of claim 13 wherein for VBP blocks for which the comparison succeeds, for each owner VBP stored within those VBP blocks, performing the consistency check on that owner VBP includes: reading metadata associated with a data block directly pointed to by that owner VBP to identify a recorded owner VBP of that data block; for VBP blocks for which the identified recorded owner VBP of the data block pointed to by that owner VBP is the same as that owner VBP its
by bit configuration check, e.g. of formats or tags · CPC title
File system administration, e.g. details of archiving or snapshots (error detection or correction of the data by redundancy in operations G06F11/14) · CPC title
Physics · mapped topic
Related publications grouped by family.
Answers are generated from the same data shown on this page.