Techniques for efficiently performing a filesystem consistency check

US9916191B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9916191-B1
Application numberUS-201414576450-A
CountryUS
Kind codeB1
Filing dateDec 19, 2014
Priority dateDec 19, 2014
Publication dateMar 13, 2018
Grant dateMar 13, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • 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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9916191B1 cover?
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 tr…
Who is the assignee on this patent?
Emc Corp, Emc Ip Holding Co Llc
What technology area does this patent fall under?
Primary CPC classification G06F11/0763. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 13 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).