| CPC G06F 11/1435 (2013.01) [G06F 3/0619 (2013.01); G06F 3/065 (2013.01); G06F 3/067 (2013.01)] | 20 Claims | 

| 
               1. A method of performing processing to recover metadata comprising: 
            writing, to a first file system object in a file system having a file system logical address space, a plurality of write data stored at a plurality of target logical addresses included in a first portion of the file system logical address space, wherein the first file system object has a corresponding first index node (inode) and first inode number, wherein the first inode is a first structure included in an inode table, wherein a metadata (MD) mapping structure is used to map file system logical addresses of the file system logical address space to storage locations of data stored at corresponding ones of the file system logical addresses, wherein the MD mapping structure is a hierarchical structure including a plurality of levels of nodes including a first level comprising a plurality of MD top nodes, wherein a first of the MD top nodes is associated with the first portion of the file system logical address space and wherein the first MD top node is used in mapping the first portion of the file system logical address space to corresponding storage locations of data stored at file system logical addresses of the first portion, wherein the MD mapping structure is a separate independent structure from the inode table, wherein the first MD top node is used in mapping logical addresses of a plurality of file system objects corresponding to a plurality of inodes and a plurality of inode numbers, wherein the first MD top node includes a first plurality of entries used in mapping a first set of logical addresses of the first file system object having the first inode number, and wherein the first MD top node includes a second plurality of entries used in mapping a second set of logical addresses of a second file system object having a second inode and a second inode number that is different from the first inode number, wherein the first inode of the inode table includes a first object extent location identifying a first starting offset in the file system logical address space for the first inode number, wherein the second inode of the inode table includes a second object extent location identifying a second starting offset in the file system logical address space for the second inode number; 
                responsive to said writing, updating the MD mapping structure to map the plurality of target logical addresses to corresponding storage locations storing the plurality of write data; 
                creating a plurality of shadow top structures, wherein a different one of the plurality of shadow top structures is created for each of the plurality of MD top nodes included in the MD mapping structure which is a separate independent structure from the inode table, wherein each MD top node of the MD mapping structure is used in determining storage locations for a specified subrange of logical addresses of the file system logical address space, and wherein each of the plurality of shadow top structures for a corresponding one of the plurality of MD top nodes describes each file system object mapped to a logical address included in the specified subrange of logical addresses of the file system address space associated with said corresponding one of the plurality of MD top nodes, wherein the corresponding one MD top node for said each shadow top structure has a first plurality of child nodes in the MD mapping structure, wherein said each shadow top structure includes a plurality of entries each associated with one of the first plurality of child nodes of the corresponding one MD top node in the MD mapping structure, wherein each of the plurality of entries of said each shadow top structure is associated with a portion of logical addresses in the specified subrange of the corresponding one MD top node and wherein each entry of the shadow top structure includes an inode number of a file system object mapped to the portion of logical addresses associated with said each entry and associated with said one child node, wherein a first of the plurality of shadow top structures corresponds to the first MD top node, the first shadow top structure including first corresponding entries associated with the first inode and the first plurality of entries of the first MD top node, wherein each of the first corresponding entries of the first shadow top structure includes the first inode number and is associated with a unique subrange of the file system logical address space associated with a single child node of the first MD top node, the first shadow top structure including second corresponding entries associated with the second inode and the second plurality of entries of the first MD top node, wherein each of the second corresponding entries of the first shadow top structure includes the second inode number and is associated with a unique subrange of the file system logical address space associated with a single child node of the first MD top node; and 
                performing first processing that uses the plurality of shadow top structures to recover first information for the first inode associated with the first file system object of the file system having the file system logical address space and to recover second information for the second inode associated with the second file system object of the file system, wherein said first processing includes: 
                constructing a temporary set of inode structures using the shadow top structures corresponding to the plurality of MD top nodes of the MD mapping structure which is a separate independent structure from the inode table, wherein said constructing includes: 
                determining a first subset of the file system logical address space mapped to the first inode number based on unique subranges of the file system logical address space that are associated with the first corresponding entries of the first shadow top structure; 
                determining, from the first subset, the first starting offset in the file system logical address space for the first inode number; 
                determining a second subset of the file system logical address space mapped to the second inode number based on unique subranges of the file system logical address space that are associated with the second corresponding entries of the first shadow top structure; and 
                determining, from the second subset, the second starting offset in the file system logical address space for the second inode number; 
                comparing the temporary set of inode structures to the inode table; and 
                updating inode structures of the the inode table using corresponding inode structures from the temporary set. 
               |