摘要:
An improved technique generates formatted file system metadata in increments only when metadata for those increments are specifically requested. A location on a storage volume designated for storing file system metadata is read and tested to determine whether it stores a predetermined pattern indicating an unformatted state. If the pattern is found, metadata for the designated location are generated and returned. Otherwise, metadata are returned as initially read from the storage volume.
摘要:
In a file server, a file system is built upon a volume of data storage. The file system includes multiple cylinder groups. Each cylinder group includes file system blocks. The file system blocks include allocated blocks and free blocks. The volume includes slices of storage, and each slice stores at least one of the cylinder groups. A hierarchical slice map has a top level that includes a count of free blocks in the file system, an upper level that includes a count of free blocks in groups of the slices, an intermediate level that includes a count of the free blocks in sub-groups of the slices, and a bottom level that includes a count of the free blocks in each slice of storage. To find a free block for allocation to a file, the slice map hierarchy is searched in a top-down fashion.
摘要:
Markers are established in a data object to provide a means to refer to specified parts of the object. Each marker is established within the object by giving the location and length of the part of the object that is to be marked. The marker continues to mark that part of the object as changes are made elsewhere in the object. As data is received into the cache computer it is stored in a sequence of buffers. A plurality of filters, all executing concurrently, search for different interesting string in the object. Each filter finds its interesting strings and marks them using the markers. The result of filtering data of the object is a marker attribute table identifying each of the markers by the offset and length of the interesting strings located by the filters. Vend time is the time at which the object is streamed out of the cache to a client computer. Before the data is vended, a User Data Filter (UDF) executes a call function which sets up a string substitution table. The substitution table has entries for substitution, including the offset at which to make the substitution and the string to be substituted into the streaming object. A byte counter tracks the outgoing data stream of the object, and whenever the byte count matches an offset of a marker, the length entry in the marker attribute table determines the length of an omitted string, and the substitute string is placed in the outgoing data stream.
摘要:
A directory name lookup cache (DNLC) provides a hashed forward mapping for finding the “child handle” associated with a “parent handle” and a “child name.” To provide an efficient reverse lookup capability, a second set of links is added to each cache entry for a “child hash list” indexed by a hashing of the child handle. For dynamically enabling and disabling the reverse mapping, when a new cache entry is added to its parent hash list, if the reverse mapping is enabled, then the new cache entry is also added to its child hash list; otherwise, the new cache entry is marked to indicate that it is not in any child hash list. To save memory, the parent hash lists and the child hash lists may share hash buckets.
摘要:
For enabling a fast reverse lookup of parent directories storing records of hard links to a specified regular file, a file system manager maintains a hard link database (HLDB) storing information for addressing hard links to the regular files having multiple hard links. The HLDB contains a corresponding HLDB file for each regular file having multiple hard links. In a preferred implementation, the inode of each regular file stores the addressing information for one hard link to the regular file, a corresponding HLDB file stores the addressing information for other hard links to the regular file, each HLDB file is a directory accessed by invoking file system manager directory access routines, and the HLDB has a directory tree providing a multi-level hash index for searching the HLDB given the inode number of a regular file.