US 7,610,307 B2
Method and system of detecting file system namespace changes and restoring consistency
Sarosh Cyrus Havewala, Redmond, Wash. (US); Ravinder S. Thind, Kirkland, Wash. (US); Neal R. Christiansen, Bellevue, Wash. (US); Ran Kalach, Bellevue, Wash. (US); and James R. Benton, Seattle, Wash. (US)
Assigned to Microsoft Corporation, Redmond, Wash. (US)
Filed on Nov. 30, 2004, as Appl. No. 11/180.
Prior Publication US 2006/0117056 A1, Jun. 01, 2006
Int. Cl. G06F 17/00 (2006.01); G06F 7/00 (2006.01)
U.S. Cl. 707—104.1  [707/102; 707/200] 33 Claims
OG exemplary drawing
 
1. A computer-readable storage medium having computer-executable instructions encoded thereon which, when executed within a computing environment, implement a method comprising:
persisting metadata maintained by a filter in a computer-readable storage medium, wherein the metadata comprises one or more object records including information associated with an object of a file system;
attaching the filter to a volume of the file system;
determining whether the volume has been restored;
selecting an object record from the metadata;
when the volume has been restored, attempting to open the object associated with the object record by name;
when the volume has not been restored, attempting to open the object associated with the object record by file ID;
updating the metadata by:
i—when opening the object by file ID is successful, determining if the object's name has changed;
ii—when the name has changed, updating the object's name in the metadata to match the object's name on the volume;
iii—when opening the object by file ID is unsuccessful, attempting to open the object using the object's name;
iv—when opening the object using the object's name is successful, updating the file ID of the object in the metadata to match the file ID of the object on the volume; and
v—when opening the object using the object's name is unsuccessful, deleting the object record from metadata; and
after updating the metadata, then:
a—determining whether another object record exists in the metadata which has not been selected; and
b—when another object record exists in the metadata which has not been selected, selecting the another object record.