Systems and methods for providing variable protection

Information

  • Patent Grant
  • 8054765
  • Patent Number
    8,054,765
  • Date Filed
    Monday, June 15, 2009
    14 years ago
  • Date Issued
    Tuesday, November 8, 2011
    12 years ago
Abstract
The systems and methods maintain varying protection levels of related objects, such as when nodes of a data structure are protected at the same or greater protection level as their children nodes. In one embodiment, the nodes store data to track protection levels of their children nodes.
Description
FIELD OF THE INVENTION

This invention relates to systems and methods for providing protection within a data structure where the objects of the data structure have different protection requirements.


BACKGROUND

Various protection techniques may be used to protect data. These techniques may include, for example, error correction, redundancy, and mirroring so that if one set of the data is not inaccessible, the data can be recovered. It is often difficult to determine what level of protection is required for the data.


SUMMARY

Systems and methods are disclosed that determine what level of protection is required for a data structure where the objects of the data structure have different protection requirements. In one embodiment, the data structure is protected by protecting objects of the data structure at the same or greater protection level as their children. In another embodiment, the objects store data to track the protection requirements of their children.


In one embodiment, a method is provided that protects data of variable protection levels. The method may include, for each leaf node, determining a protection level for the leaf node; for each non-leaf node, determining a protection level for each non-leaf node based on a maximum of the protection levels of each child of each of the non-leaf nodes; protecting each of the leaf nodes at the protection level determined for each of the leaf nodes; and protecting each of the non-leaf nodes at the protection level determined for each of the non-leaf nodes.


In another embodiment, a protection system is provided for protecting data of variable protection levels. The system may include a set protection level module configured to determine protection levels for each of a set of leaf nodes and determine protection levels for each of a set of non-leaf nodes based on a maximum of the protection levels of children of each of the non-leaf nodes; and an implement protection level module, in communication with the set protection level module, configured to protect each leaf node at the determined protection level and protect each non-leaf node at the determined protection level.


In another embodiment, a method is provided that updates data of variable protection levels. The method may include determining a maximum protection level of an updated leaf node, wherein the updated leaf node comprises a plurality of data sets; protecting the updated leaf node at the maximum protection level; determining a count of data sets that are at the maximum protection level; and for each ascendant of the updated leaf node, determining a maximum protection level of each ascendant, determining a count of children of each ascendant that are at the maximum protection level, and protecting each ascendant at the maximum protection level.


In another embodiment, a system is provided for updating data stored using variable protection levels. The system may include an update leaf module configured to determine a maximum protection level of an updated leaf node, wherein the updated leaf node comprises a plurality of data sets, and protect the updated leaf node at the maximum protection level; an update non-leaf module in communication with the update leaf module, the update non-leaf module configured to, for each ascendant of the updated leaf node, determine a maximum protection level of each ascendant and protect each ascendant at a protection level greater than or equal to the maximum protection level.


For purposes of summarizing this invention, certain aspects, advantages and novel features of the invention have been described herein. It is to be understood that not necessarily all such advantages may be achieved in accordance with any particular embodiment of the invention. Thus, the invention may be embodied or carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other advantages as may be taught or suggested herein.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1A illustrates one embodiment of a high-level block diagram of one embodiment of a mirrored tree.



FIG. 1B illustrates another embodiment of a high-level block diagram of one embodiment of a mirrored tree.



FIG. 2 illustrates one embodiment of a flow chart of a check protection information process.



FIG. 3 illustrates one embodiment of a flow chart of an add node process.



FIG. 4 illustrates one embodiment of a flow chart of a delete node process.



FIG. 5 illustrates one embodiment of a flow chart of a modify node process.



FIG. 6 illustrates one embodiment of a protection system.



FIG. 7 illustrates one embodiment of a high-level block diagram of one embodiment of a mirrored index tree.





DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Systems and methods which represent one embodiment and example application of the invention will now be described with reference to the drawings. Variations to the systems and methods which represent other embodiments will also be described.


For purposes of illustration, some embodiments will be described in the context of a tree and example environments in which the tree may be used will also be described. The inventors contemplate that the present invention is not limited by the type of environment in which the systems and methods are used, and that the systems and methods may be used in various environments. It is also recognized that in other embodiments, the systems and methods may be implemented as a single module and/or implemented in conjunction with a variety of other modules and the like. Moreover, the specific implementations described herein are set forth in order to illustrate, and not to limit, the invention. The scope of the invention is defined by the appended claims.


These and other features will now be described with reference to the drawings summarized above. The drawings and the associated descriptions are provided to illustrate embodiments of the invention and not to limit the scope of the invention. Throughout the drawings, reference numbers may be re-used to indicate correspondence between referenced elements. In addition, the first digit of each reference number generally indicates the figure in which the element first appears.


I. Overview


The systems and methods of the present invention provide protection for data structures with nodes of various protection levels. In one embodiment, data is stored in a tree where nodes without children are referred to as leaf nodes and the top node of the tree is referred to as a root node. Nodes of the tree may be protected at various protection levels. In one embodiment, the various protection levels represent the number of mirrored copies of the nodes.


In some embodiments, the nodes have at least the maximum protection level as their children. Accordingly, when a modification is made to one node in a tree, the protection level of that node and its ancestors (e.g., parent node, grandparent node, etc.) are checked to determine whether their protection levels need to be updated. For example, when a node is added the tree, the protection level for that node is determined, the appropriate number of copies of the node are created, and the node's ancestors are checked to determine whether their protection levels need to be updated. When a node is deleted from the tree, the node's ascendants are checked to determine whether their protection levels need to be updated.


II. Mirrored Tree


A. Example Mirrored Tree



FIG. 1A illustrates an example mirrored tree 100 that includes nine nodes 110, 120, 130, 140, 150, 160, 170, 180, 190. Node 110 is the root node, and nodes 130, 140, 160, 180, 190 are leaf nodes (because they have no children). Root node 110, node 120, and node 160 are mirrored five times (e.g., 5×); node 150 and node 170 are mirrored three times (e.g., 3×); node 130, node 180, and node 190 are mirrored two times (e.g., 2×); and node 140 is mirrored one time (e.g., 1×). In one embodiment, mirrored copies of a node are distributed and stored among a set of devices.


In accordance with one embodiment, each node is at a protection level at least the maximum protection level of is children. For example, node 170 has two children, both with protection level 2× 180. Thus, the maximum protection level of the children of root node 170 is 2×. Accordingly, node 170 is protected at protection level 2× which is at least the maximum protection level of its children. As another example, root node 110 has four children, one with protection level 5× 120, one with protection level 3× 150, one with protection level 2× 130, and one with protection level 1× 140. Thus, the maximum protection level of the children of root node 110 children is 5×. Accordingly, root node 110 is protected at protection level 5× which is at least the maximum protection level of its children.


B. Protection Level Data


In one embodiment, the different protection levels are managed using protection level information. Protection level information may include, for example, the protection level of a node's children, the maximum protection level of the node's children, the count of children at each protection level, the count of the children with the maximum protection level, protection levels of data entries, the count of data entries at one or more protection levels, and so forth. In FIG. 1A, the protection level information includes the maximum protection level of the node's children followed by the count of the children with the maximum protection level as follows:

[maximum protection level]:[count of children with the maximum protection level]


For example, the protection level information for the root node 170 is: 5×:1 indicating that the maximum protection level of the root node's children is 5× and the number of children at that protection level is 1. As another example, the protection level information for the node 170 is: 2×:2 indicating that the maximum protection level of the root node's children is 2× and the number of children at that protection level is 2. In FIG. 1A, the leaf nodes provide the maximum protection level of their data entries and the number of data entries at that protection level.


A variety of protection level information may be used. For example, FIG. 1B illustrates the same tree 100 wherein different protection level information is stored. In FIG. 1B, the protection level information includes protection level of the node, the protection levels used by the children, and the count of the children with the each of the protection levels.


For example, the protection level information for the root node 170 includes: 5× indicating that the root node 110 is stored at 5×; 5×:1 indicating that one of the root node's children is stored at the protection level 5×; 3×:1 indicating that one of the root node's children is stored at the protection level 3×; 2×:1 indicating that one of the root node's children is stored at the protection level 2×; and 1×:1 indicating that one of the root node's children is stored at the protection level 5×. As another example, the protection level information for the node 170 includes: 2× indicating that node 170 is stored at protection level 2×; 2×:2 indicating that two of the root node's children are stored at protection level 2×. From this information, the total number of children may be determined by summing the counts. Similarly, protection information for the leaf nodes includes the protection levels of the data entries as well as the number of data entries at that protection level. In the example, the leaf nodes may store multiple data entries, though it is recognized that in other embodiments, the leaf nodes may store one data entry or a fixed number of data entries.


C. Nodes


1. Leaf Nodes


The protection level of the leaf nodes may be predetermined, may be set for each leaf node, and/or may be set for a subset of leaf nodes. In addition, a minimum protection level of the leaf nodes may also be set. In one embodiment, where the leaf nodes store data, the protection level may be determined by using the protection level of the data stored in or referenced by the leaf node. For example, in one embodiment, if leaf node 180 includes two sets of data, Data A and Data B, the protection level of leaf node 180 is MAX (Data A, Data B).


In one embodiment, the protection level information for the leaf node indicates the maximum protection level of the data stored in or referenced by the leaf node. In other embodiments, the protection level information for the leaf node indicates the protection level of the leaf node, such as in FIGS. 1A and 1B. In other embodiments, the protection level information for the leaf node is NULL.


2. Non-Leaf Nodes


In order to preserve the protection of the data sets, non-leaf nodes are protected at a level at least that of the maximum protection level of the children of the non-leaf nodes. For example, the protection level of root node 110 is MAX(Node 120, Node 130, Node 140, Node 150)=MAX(5×, 2×, 1×, 3×)=5×. The protection level of node 120 is MAX(Node 160)=MAX(5×)=5×. The protection level of node 150 is MAX(Node 170)=MAX(3×)=3×. The protection level of node 170 is MAX(Node 180, Node 190)=MAX(2×, 2×)=2×.


In one embodiment, the protection level information for the non-leaf nodes may include the protection level of a node's children, the maximum protection level of the node's children, the count of children at each protection level, the count of the children with the maximum protection level, and so forth. It is recognized that a variety of protection level information could be used. For example, the protection level information could include the maximum protection level without any counts.


It is recognized that in other embodiments, the tree may track other protection information in addition to the maximum protection level and the maximum protection level count. For example, the tree may also track information about the protection levels of each of the node's children in addition to or instead of the maximum protection level and keep a count of the number of children at each protection level. In other embodiments, the tree may also store information about a subset of the protection levels and counts related to those protection levels.


D. Various Embodiments


It is recognized that a variety of embodiments may be used to implement a data structure with variable protection and that the example provided herein are meant to illustrate and not limit the scope of the invention.


1. Data Structures


While the examples discuss the data as being stored in a tree, it is recognized that a variety of data structures known to those of ordinary skill in the art may be used to organize the data including, for example, balanced trees, binary trees, other trees, graphs, linked lists, heaps, stacks, and so forth.


2. Protection Techniques


In one embodiment, data may be protected using a variety of protection schemes, such as, error correction, redundancy, and so forth. The examples discussed below illustrate an embodiment in which the tree is protected using mirroring, though it is recognized that other protection techniques may be used.


While some mirrored trees may be implemented such that the entire tree is always mirrored the same number of times (e.g., all of the nodes are mirrored two times; all of the nodes are mirrored five times, etc.), such an implementation often requires storing extra, unnecessary copies of nodes. Thus, the systems and methods described herein allow different nodes of the tree to be stored using different protection levels while maintaining the protection levels of descendant nodes. In addition, nodes that do not need any protection do not have to use any protection level.


It is recognized that a combination of techniques may be used to implement the tree. For example, the tree may require that every node is mirrored at least two times but that additional mirroring may be implemented to protect nodes that have children that are mirrored more than two times.


III. Operations


Operations for checking the protection information, modifying protection information, adding an item, and removing an item are set forth below. It is recognized that examples below provide various embodiments of the processes and that other embodiments may be used.


A. Check Protection Information of a Node


To check the protection information of a node of a mirrored tree, a node is received and the maximum protection count is determined. If the maximum protection count for the node is zero, then the maximum protection level of the node's items are determined, and the count is updated to reflect the number of items at that protection level. In one embodiment, items for non-leaf nodes are its children nodes, and items for leaf nodes are the data entries in the leaf node.


One example set of pseudocode to check, and if necessary, update the protection information of a node is as follows:

















fixup_node(node) {









if (node.mp_count == 0) {









node.max_protection = MAX(items' protections)



node.mp_count = count(items at max protection)









}



if (node.current_protection != node.max_protection) {









set_mirror_count(node, node.max_protection)



node.current_protection = node.max_protection



if (node != root)









modify_item_protection(get_parent(node), &node,









node.max_protection);









}









}











FIG. 2 illustrates one embodiment of a check process 200. Beginning at a start state 210, the check process 200 proceeds to the next block 215. In block 215, the check process 200 receives a node. It is recognized that in some embodiment the check process 200 may receive a reference to the node, information from the node, a pointer to the node, and so forth. Proceeding to block 220, the check process 200 determines whether the node's count of maximum protection items is zero. If not, then the check process 200 proceeds to block 235. If so, then the check process 200 determines the maximum protection of the node's items 225 and the number of items at that maximum protection 230.


Proceeding to the next block 235, the check process 200 determines whether the current protection of the node is the same as the maximum protection. If so, then the check process 200 proceeds to an end state 260. If not, then the check process 200 sets the current protection of the node to the maximum protection 240 and sets the current maximum count to the count of the number of items at that maximum protection 245, and proceeds to block 250.


In block 250, the check process 200 determines whether the current node is the root. If so, the check process 200 proceeds to the end state 260. If not, then the check process 200 calls the modify process to modify the protection information of the node's parent using the node and the new maximum protection and proceeds to the end state 260.


B. Modifying Protection Information of an Item


To modify protection information of an item, a node, an item is received, and a new protection is received. If the item's previous protection is the same as the node's protection, then the node's maxim-m protection level count is decremented. If the new protection is the same as the node's protection, then the node's maximum protection level count is incremented. If the new protection is higher than the node's maximum protection, then the node's protection is set to the new protection, and the node's maximum protection count is set to 1. Then, the check protection process is called on the node.


One example set of pseudocode to modify protection information is as follows:

















modify_item_protection(node, item, new_prot) {









if (item.protection == node.max_protection)









−−node.mp_count









if (new_prot == node.max_protection) {









++node.mp_count









} else if (new_prot > node.max_protection) {









node.max_protection = new_prot



node.mp_count = 1









}



fixup_node(node)









}











FIG. 3 illustrates one embodiment of a modify process 300. Beginning at a start state 310, the modify process 300 proceeds to the next block 315. In block 315, the modify process 300 receives a node, an item, and a new protection. It is recognized that in some embodiments, the modify process 300 may receive a reference to the node, information from the node, a pointer to the node, and so forth. Proceeding to block 320, the modify process 300 determines whether the node's maximum protection is equal to the item's protection. If not, then the modify process 300 proceeds to block 330. If so, then the modify process 300 decrements the node's count 325 and proceeds to block 330.


In block 330, the modify process 300 determines whether the new protection is the same as the node's maximum protection. If not so, then the modify process 300 proceeds to block 340. If so, then the modify process 300 increments the node's count 335 and proceeds to block 355.


In block 340, the modify process 300 determines whether the new protection is greater than the node's maximum protection. If not, then the modify process 300 proceeds to block 355. If so, then the modify process sets the node's maximum protection to the new protection 345, sets the node's count to 1, and proceeds to block 355.


In block 355, the modify process 300 calls the check process 200 with the node and proceeds to an end state 360.


C. Adding an Item


To add an item, a node and an item are received. The item is added to the node. For leaf nodes, this would include adding a data entry. For non-leaf nodes, this would include adding a child node. If the item's protection is the same as the node's protection, then the node's count is incremented. If the item's protection is greater than the node's protection, then the node's protection is set to the item's protection, the node's count is set to one, and protection information of the node is checked using, for example, the process described above.


One example set of pseudocode to add an item to the mirrored tree is as follows:

















add_item(node, item) {









add_item_to_node(node, item)



if (item.protection == node.max_protection) {









++node.mp_count









} else if (item.protection > node.max_protection) {









node.max_protection = item.protection



node.mp_count = 1



fixup_node(node)









}









}











FIG. 4 illustrates one embodiment of an add process 400. Beginning at a start state 410, the add process 400 proceeds to the next block 415. In block 415, the add process 400 receives a node and an item. It is recognized that in some embodiment the add process 400 may receive a reference to the node and/or item, information from the node and/or item, a pointer to the node and/or item, and so forth. Proceeding to block 420, the add process 400 determines whether the item's protection is equal to the node's maximum protection. If not, then the add process 400 proceeds to block 430. If so, then the add process 400 increments the node's count 425 and proceeds to an end state 450.


In block 430, the add process 400 determines whether the item's protection is greater than the node's maximum protection. If not, then the add process 400 proceeds to the end state 450. If so, then the add process 400 sets the node's maximum protection to the item's protection 435, sets the node's count to 1 440, calls the check process 200 with the node 445, and proceeds to the end state 450.


D. Deleting an Item


To delete an item, a node and an item are received. The item is removed from the node. For leaf nodes this may include removing a data entry. For non-leaf nodes, this may include removing a child node. If the item's protection was the same as the node's protection, then the node's count is decremented. If the node's new count is zero, then the protection information of the node is checked using, for example, the process described above.


One example set of pseudocode to delete an item from the mirrored tree is as follows:

















remove_item(node, item) {









remove_item_from_node(node, item)



if (item.protection == node.max_protection) {









−−node.mp_count



if (node.mp_count == 0)









fixup_node(node)









}









}











FIG. 5 illustrates one embodiment of a delete process 500. Beginning at a start state 510, the add process 500 proceeds to the next block 515. In block 515, the delete process 500 receives a node and an item. It is recognized that in some embodiment the add process 500 may receive a reference to the node and/or item, information from the node and/or item, a pointer to the node and/or item, and so forth. Proceeding to block 520, the delete process 500 removes the item from the node. Proceeding to block 525, the delete process determines whether the item's protection is equal to the node's maximum protection. If not, then the delete process 500 proceeds to an end state 540. If so, then the delete process 500 decrements the node's count 530, and proceeds to block 535. In block 535, the delete process 500 determines whether the node's count is zero. If not, then the delete process 500 proceeds to the end state. If so, then the delete process 500 calls the check process 200 with the node 540, and proceeds to the end state 540.


IV. Protection System



FIG. 6 illustrates one embodiment of a protection system 600 which includes a protection module 610 in communication with a set of storage devices 620. In one embodiment, the protection module 610 includes the check process 200, the modify process 300, the add process 400, and the delete process 500.


It is recognized that the module may be located apart from the set of storage devices 620 and/or may be located on one or more of the storage devices 620. In other embodiments, one or more of these modules may be spread among the set of storage devices 620.


The protection module 610 communicates with the set of storage devices 620 using a variety of communication techniques that are well known in the art. Such communication may include local communication, remote communication, wireless communication, wired communication, or a combination thereof.


In one embodiment, the set of storage devices 620 may include any type of memory that allows for the storing of nodes, protection level information, and/or count information. In some embodiments, the storage device 620 retains data even after power is turned off, however, in other embodiments, the storage device 620 may be implemented using volatile memory. The storage devices 620 may be, for example, a standard hard drive, a cache, ROM, RAM, flash memory, as well as other types of memory as is know by those of ordinary skill in the art.


In some embodiments, the protection system 600 may be accessible by one or more other systems, modules, and/or users via various types of communication. Such communication may include, for example, the Internet, a private network for a hospital, a broadcast network for a government agency, an internal network of a corporate enterprise, an intranet, a local area network, a wide area network, and so forth. It is recognized that the protection system 600 may be used in a variety of environments in which data is stored. For example, the protection system 600 may be used to store records in a database, content data, metadata, user account data, and so forth.


In one embodiment, the protection system 600 runs on a variety of computer systems such as, for example, a computer, a server, a smart storage unit, and so forth. In one embodiment, the computer may be a general purpose computer using one or more microprocessors, such as, for example, a Pentium processor, a Pentium II processor, a Pentium Pro processor, a Pentium IV processor, an xx86 processor, an 8051 processor, a MIPS processor, a Power PC processor, a SPARC processor, an Alpha processor, and so forth. The computer may run a variety of operating systems that perform standard operating system functions such opening, reading, writing, and closing a file. It is recognized that other operating systems may be used, such as, for example, Microsoft® Windows® 3.X, Microsoft® Windows 98, Microsoft® Windows® 2000, Microsoft® Windows® NT, Microsoft® Windows® CE, Microsoft® Windows® ME, Palm Pilot OS, Apple® MacOS®, Disk Operating System (DOS), UNIX, IRIX, Solaris, SunOS, FreeBSD, Linux®, or IBM® OS/2® operating systems.


As used herein, the word module refers to logic embodied in hardware or firmware, or to a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, C or C++. A software module may be compiled and linked into an executable program, installed in a dynamic link library, or may be written in an interpreted programming language such as BASIC, Perl, or Python. It will be appreciated that software modules may be callable from other modules or from themselves, and/or may be invoked in response to detected events or interrupts. Software instructions may be embedded in firmware, such as an EPROM. It will be further appreciated that hardware modules may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors. The modules described herein are preferably implemented as software modules, but may be represented in hardware or firmware.


It is also recognized that in some embodiments, the systems and methods may be implemented as a single module and/or implemented in conjunction with a variety of other modules and the like. Moreover, the specific implementations described herein are set forth to illustrate, and not to limit, the present disclosure.


V. Example Environment


The following provides an example environment in which a distributed mirrored index tree may be used. It is recognized that the systems and methods disclosed herein are not limited to the example environment and that the example is only meant to illustrate embodiments of the invention.


A. Indexing Tree


In one embodiment, the indexing tree is an index tree wherein the copies of the nodes of the tree are stored across devices in a distributed system. The nodes of the indexing tree are stored using at least the same level of protection of data stored in the indexing data structure. In one embodiment, nodes that are stored on an offline device are restored, offline devices that come back online are merged into the distributed system and given access to the index tree, and the index tree is traversed to locate and restore nodes that are stored on offline devices. Additional description of an indexing tree structure is set forth in U.S. Patent Applications entitled “Systems and Methods for Maintaining Distributed Data,” and “Systems and Methods for Updating Distributed Data,” filed concurrently herewith, which are incorporated by reference above.


In one embodiment, data stored in the tree includes metadata that represents the protection level of the data. In addition, each node, including the root node, the internal nodes, and the leaf nodes, also includes protection information. FIG. 7 illustrates one embodiment of an index, where the index tree includes different mirroring levels, such that different nodes in the index tree are mirrored a different number of times. For example, Data B is stored with a protection level of 3×. Accordingly, the branches of the index tree 740, 750 that lead to Data B are also protected at a protection level of at least 3×.


1. Leaf Nodes


In the example, leaf node 770 has 2 copies, leaf node 780 has 3 copies, and leaf node 790 has 2 copies. In addition, the number of data entries that have the maximum level of protection for leaf node 770 is 2; the number of data entries that have the maximum level of protection for leaf node 780 is 1; and the number of data entries that have the maximum level of protection for leaf node 790 is 1.


2. Non-Leaf Nodes


In the example, the protection level of internal node 750 is MAX(Leaf Node 770, Leaf Node 780, Other Children Nodes)=MAX(2×, 3×, 2×)=3×; the protection level of internal node 760 is MAX(Leaf Node 790, Other Children Nodes)=MAX(2×, 2×)=2×; and the protection level of root node 740 is MAX(Internal Node 750, Internal Node 760, Other Children Nodes)=MAX(3×, 2×, 2×)=3×. In addition, the number of children that have the maximum level of protection for internal node 750 is 1; the number of children that have the maximum level of protection for internal node 760 is 2; and the number of children that have the maximum level of protection for root node 740 is 1.


Thus, the index information for each node is protected at least as much as the node's children. In addition, unnecessary replication is avoided. For example, only the nodes in the path to the data set that has a protection level 3× are copied three times, thereby saving on resources while maintaining the integrity of the data.


In one embodiment, the data in the indexing system is used to store identifiers for files and/or directories, and where the data entries provide the actual address of the metadata data structure, or inode, of the files and/or directories.


VI. Conclusion


While certain embodiments of the invention have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the present invention. Accordingly, the breadth and scope of the present invention should be defined in accordance with the following claims and their equivalents.

Claims
  • 1. A method of protecting nodes within a hierarchical data structure at variable protection levels, the hierarchical data structure comprising leaf nodes and non-leaf nodes, the method comprising: determining a protection level for each of one or more leaf nodes, wherein each protection level corresponds to a level of protection against loss of data, and wherein each level of the protection against the loss of the data corresponds to at least one of a number of mirrored copies, a level of error correction, and a level of parity protection of the leaf node;determining, by a computer processor, a protection level for a non-leaf node, wherein the non-leaf node has one or more children with corresponding protection levels, and wherein the protection level of the non-leaf node is based on a maximum of the protection levels of current children of the non-leaf node;identifying an increase in the maximum of the protection levels of the current children of the non-leaf node;as a result of identifying the increase in the maximum of the protection levels of the current children of the non-leaf node, determining, by a computer processor, an increased protection level for the non-leaf node; andincreasing at least one of a number of mirrored copies of the non-leaf node, a level of error correction of the non-leaf node, and a level of parity protection of the non-leaf node to correspond to the increased protection level for the non-leaf node.
  • 2. The method of claim 1, further comprising: storing the protection level for each of the one or more leaf nodes; andstoring the protection level for the non-leaf node.
  • 3. The method of claim 1, wherein each of the one or more leaf nodes is associated with one or more sets of data, and determining the protection level for the each of the one or more leaf nodes is based on a maximum of the protection levels of the one or more sets of the data associated with the leaf nodes.
  • 4. The method of claim 1, further comprising, for the non-leaf node, storing protection level information, the protection level information comprising the number of the current children of the non-leaf node having the protection level of the non-leaf node.
  • 5. The method of claim 4, wherein the protection level information further comprises the number of the current children of the non-leaf node at each protection level other than the protection level of the non-leaf node.
  • 6. A protection system for protecting data of variable protection levels, the system comprising: at least one computer processor;at least one memory;a hierarchical data structure stored on the at least one memory and accessible by the at least one computer processor, the hierarchical data structure comprising leaf nodes and non-leaf nodes; andat least one executable software module, the computer processor configured to execute the at least one executable software module, the at least one executable software module configured to:determine protection levels for each of one or more of the leaf nodes;determine a protection level for a non-leaf node, wherein the non-leaf node has one or more children with corresponding protection levels, wherein the protection level for the non-leaf node is based on a maximum of the protection levels of current children of the non-leaf node, wherein each protection level corresponds to a level of protection against loss of data, and wherein each level of the protection against the loss of the data corresponds to at least one of a number of mirrored copies, a level of error correction, and a level of parity protection of the leaf node;identify an increase in the maximum of the protection levels of the current children of the non-leaf node; andincrease at least one of a number of mirrored copies of the non-leaf node, a level of error correction of the non-leaf node, and a level of parity protection of the non-leaf node to correspond to the identified increase in the maximum of the protection levels of the current children of the non-leaf node.
  • 7. The system of claim 6, wherein the at least one executable software module is further configured to: store a protection level indicator on the at least one memory for each of the leaf nodes; andstore a protection level indicator on the at least one memory for the non-leaf node.
  • 8. The system of claim 6, wherein each of the leaf nodes is associated with one or more sets of data, and the at least one executable software module is further configured to determine the protection levels for each of the one or more leaf nodes based on a maximum of the protection levels of the one or more sets of the data associated with the leaf node.
  • 9. The system of claim 6, wherein the at least one executable software module is further configured to, for the non-leaf node, store protection level information, the protection level information comprising the number of the current children of the non-leaf node having the protection level of the non-leaf node.
  • 10. The system of claim 9, wherein the protection level information further comprises the number of the current children of the non-leaf node at each protection level other than the protection level of the non-leaf node.
  • 11. A system for updating data stored using variable protection levels, the system comprising: at least one computer processor;at least one memory;a hierarchical data structure stored on the at least one memory and accessible by the at least one computer processor, the hierarchical data structure comprising leaf nodes and non-leaf nodes, the leaf nodes comprising one or more references to one or more data sets; andat least one executable software module, the computer processor configured to execute the at least one executable software module, the at least one executable software module configured to:determine a first protection level of a leaf node based on a maximum of protection levels of the data sets referenced by the leaf node, wherein each protection level corresponds to a level of protection against loss of the data, and wherein each level of the protection against the loss of the data corresponds to at least one of a number of mirrored copies, a level of error correction, and a level of parity protection of the leaf node;determine an increased protection level of an ancestor node of the leaf_node, wherein the ancestor node has one or more children with corresponding protection levels, and wherein the protection level of the ancestor node is based on a maximum of the protection levels of current children of the ancestor node; andincrease at least one of a number of mirrored copies of the ancestor node, a level of error correction of the ancestor node, and a level of parity protection of the ancestor node to correspond to the increased protection level of the ancestor node.
  • 12. The system of claim 11, wherein the at least one executable software module is further configured to: store a protection level indicator on the at least one memory for the leaf node; andstore a protection level indicator on the at least one memory for the ancestor node of the leaf node.
  • 13. The system of claim 11, wherein the at least one executable software module is further configured to, for the ancestor node of the leaf node, store protection level information, the protection level information comprising the number of the current children of the ancestor node having the protection level of the ancestor node.
  • 14. The system of claim 13, wherein the protection level information further comprises the number of the current children of the ancestor node at each protection level other than the protection level of the ancestor node.
REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims benefit of priority under 35 U.S.C. §120 to U.S. patent application Ser. No. 11/256,410 now U.S. Pat. No. 7,551,572, filed Oct. 21, 2005, entitled “SYSTEMS AND METHODS FOR PROVIDING VARIABLE PROTECTION,” which is hereby incorporated by reference herein in its entirety. The present disclosure relates to U.S. patent application Ser. No. 11/255,817, titled “SYSTEMS AND METHODS FOR DISTRIBUTED SYSTEM SCANNING,” U.S. patent application Ser. No. 11/255,346, titled “SYSTEMS AND METHODS FOR MANAGING CONCURRENT ACCESS REQUESTS TO A SHARED RESOURCE,” U.S. patent application Ser. No. 11/255,818, titled “SYSTEMS AND METHODS FOR MAINTAINING DISTRIBUTED DATA,” U.S. patent application Ser. No. 11/256,317, titled “SYSTEMS AND METHODS FOR USING EXCITEMENT VALUES TO PREDICT FUTURE ACCESS TO RESOURCES,” and U.S. patent application Ser. No. 11/255,337 titled “SYSTEMS AND METHODS FOR ACCESSING AND UPDATING DISTRIBUTED DATA,” each filed on Oct. 21, 2005 and each hereby incorporated by reference herein in their entirety.

US Referenced Citations (379)
Number Name Date Kind
5163131 Row et al. Nov 1992 A
5181162 Smith et al. Jan 1993 A
5212784 Sparks May 1993 A
5230047 Frey et al. Jul 1993 A
5251206 Calvignac et al. Oct 1993 A
5258984 Menon et al. Nov 1993 A
5329626 Klein et al. Jul 1994 A
5359594 Gould et al. Oct 1994 A
5403639 Belsan et al. Apr 1995 A
5459871 Van Den Berg Oct 1995 A
5481699 Saether Jan 1996 A
5548724 Akizawa et al. Aug 1996 A
5548795 Au Aug 1996 A
5568629 Gentry et al. Oct 1996 A
5596709 Bond et al. Jan 1997 A
5606669 Bertin et al. Feb 1997 A
5612865 Dasgupta Mar 1997 A
5649200 Leblang et al. Jul 1997 A
5657439 Jones et al. Aug 1997 A
5668943 Attanasio et al. Sep 1997 A
5680621 Korenshtein Oct 1997 A
5694593 Baclawski Dec 1997 A
5696895 Hemphill et al. Dec 1997 A
5734826 Olnowich et al. Mar 1998 A
5754756 Watanabe et al. May 1998 A
5761659 Bertoni Jun 1998 A
5774643 Lubbers et al. Jun 1998 A
5799305 Bortvedt et al. Aug 1998 A
5805578 Stirpe et al. Sep 1998 A
5805900 Fagen et al. Sep 1998 A
5806065 Lomet Sep 1998 A
5822790 Mehrotra Oct 1998 A
5862312 Mann Jan 1999 A
5870563 Roper et al. Feb 1999 A
5878410 Zbikowski et al. Mar 1999 A
5878414 Hsiao et al. Mar 1999 A
5884046 Antonov Mar 1999 A
5884098 Mason, Jr. Mar 1999 A
5884303 Brown Mar 1999 A
5890147 Peltonen et al. Mar 1999 A
5917998 Cabrera et al. Jun 1999 A
5933834 Aichelen Aug 1999 A
5943690 Dorricott et al. Aug 1999 A
5963963 Schmuck et al. Oct 1999 A
5966707 Van Huben et al. Oct 1999 A
5996089 Mann Nov 1999 A
6000007 Leung et al. Dec 1999 A
6014669 Slaughter et al. Jan 2000 A
6021414 Fuller Feb 2000 A
6029168 Frey Feb 2000 A
6038570 Hitz et al. Mar 2000 A
6044367 Wolff Mar 2000 A
6052759 Stallmo et al. Apr 2000 A
6055543 Christensen et al. Apr 2000 A
6055564 Phaal Apr 2000 A
6070172 Lowe May 2000 A
6081833 Okamoto et al. Jun 2000 A
6081883 Popelka et al. Jun 2000 A
6108759 Orcutt et al. Aug 2000 A
6117181 Dearth et al. Sep 2000 A
6122754 Litwin et al. Sep 2000 A
6138126 Hitz et al. Oct 2000 A
6154854 Stallmo Nov 2000 A
6173374 Heil et al. Jan 2001 B1
6202085 Benson et al. Mar 2001 B1
6209059 Ofer et al. Mar 2001 B1
6219693 Napolitano et al. Apr 2001 B1
6226377 Donaghue, Jr. May 2001 B1
6279007 Uppala Aug 2001 B1
6321345 Mann Nov 2001 B1
6334168 Islam et al. Dec 2001 B1
6353823 Kumar Mar 2002 B1
6384626 Tsai et al. May 2002 B2
6385626 Tamer et al. May 2002 B1
6393483 Latif et al. May 2002 B1
6397311 Capps May 2002 B1
6405219 Saether et al. Jun 2002 B2
6408313 Campbell et al. Jun 2002 B1
6415259 Wolfinger et al. Jul 2002 B1
6421781 Fox et al. Jul 2002 B1
6434574 Day et al. Aug 2002 B1
6449730 Mann Sep 2002 B2
6453389 Weinberger et al. Sep 2002 B1
6457139 D'Errico et al. Sep 2002 B1
6463442 Bent et al. Oct 2002 B1
6496842 Lyness Dec 2002 B1
6499091 Bergsten Dec 2002 B1
6502172 Chang Dec 2002 B2
6502174 Beardsley Dec 2002 B1
6523130 Hickman et al. Feb 2003 B1
6526478 Kirby Feb 2003 B1
6546443 Kakivaya et al. Apr 2003 B1
6549513 Chao et al. Apr 2003 B1
6557114 Mann Apr 2003 B2
6567894 Hsu et al. May 2003 B1
6567926 Mann May 2003 B2
6571244 Larson May 2003 B1
6571349 Mann May 2003 B1
6574745 Mann Jun 2003 B2
6594655 Tal et al. Jul 2003 B2
6594660 Berkowitz et al. Jul 2003 B1
6594744 Humlicek et al. Jul 2003 B1
6598174 Parks et al. Jul 2003 B1
6618798 Burton et al. Sep 2003 B1
6631411 Welter et al. Oct 2003 B1
6658554 Moshovos et al. Dec 2003 B1
6662184 Friedberg Dec 2003 B1
6671686 Pardon et al. Dec 2003 B2
6671704 Gondi et al. Dec 2003 B1
6671772 Cousins Dec 2003 B1
6687805 Cochran Feb 2004 B1
6725392 Frey et al. Apr 2004 B1
6732125 Autrey et al. May 2004 B1
6742020 Dimitroff et al. May 2004 B1
6748429 Talluri et al. Jun 2004 B1
6801949 Bruck et al. Oct 2004 B1
6848029 Coldewey Jan 2005 B2
6856591 Ma et al. Feb 2005 B1
6871295 Ulrich et al. Mar 2005 B2
6895482 Blackmon et al. May 2005 B1
6895534 Wong et al. May 2005 B2
6907011 Miller et al. Jun 2005 B1
6907520 Parady Jun 2005 B2
6917942 Burns et al. Jul 2005 B1
6920494 Heitman et al. Jul 2005 B2
6922696 Lincoln et al. Jul 2005 B1
6922708 Sedlar Jul 2005 B1
6934878 Massa et al. Aug 2005 B2
6940966 Lee Sep 2005 B2
6954435 Billhartz et al. Oct 2005 B2
6990604 Binger Jan 2006 B2
6990611 Busser Jan 2006 B2
7007044 Rafert et al. Feb 2006 B1
7007097 Huffman et al. Feb 2006 B1
7017003 Murotani et al. Mar 2006 B2
7043485 Manley et al. May 2006 B2
7043567 Trantham May 2006 B2
7069320 Chang et al. Jun 2006 B1
7103597 McGoveran Sep 2006 B2
7111305 Solter et al. Sep 2006 B2
7113938 Highleyman et al. Sep 2006 B2
7124264 Yamashita Oct 2006 B2
7146524 Patel et al. Dec 2006 B2
7152182 Ji et al. Dec 2006 B2
7177295 Sholander et al. Feb 2007 B1
7181746 Perycz et al. Feb 2007 B2
7184421 Liu et al. Feb 2007 B1
7194487 Kekre et al. Mar 2007 B1
7206805 McLaughlin, Jr. Apr 2007 B1
7225204 Manley et al. May 2007 B2
7228299 Harmer et al. Jun 2007 B1
7240235 Lewalski-Brechter Jul 2007 B2
7249118 Sandler et al. Jul 2007 B2
7257257 Anderson et al. Aug 2007 B2
7290056 McLaughlin, Jr. Oct 2007 B1
7313614 Considine et al. Dec 2007 B2
7318134 Oliveira et al. Jan 2008 B1
7346346 Lipsit Mar 2008 B2
7346720 Fachan Mar 2008 B2
7370064 Yousefi'zadeh May 2008 B2
7373426 Jinmei et al. May 2008 B2
7386675 Fachan Jun 2008 B2
7386697 Case et al. Jun 2008 B1
7440966 Adkins et al. Oct 2008 B2
7451341 Okaki et al. Nov 2008 B2
7509448 Fachan et al. Mar 2009 B2
7509524 Patel et al. Mar 2009 B2
7533298 Smith et al. May 2009 B2
7546354 Fan et al. Jun 2009 B1
7546412 Ahmad et al. Jun 2009 B2
7551572 Passey et al. Jun 2009 B2
7558910 Alverson et al. Jul 2009 B2
7571348 Deguchi et al. Aug 2009 B2
7577258 Wiseman et al. Aug 2009 B2
7577667 Hinshaw et al. Aug 2009 B2
7590652 Passey et al. Sep 2009 B2
7593938 Lemar et al. Sep 2009 B2
7596713 Mani-Meitav et al. Sep 2009 B2
7631066 Schatz et al. Dec 2009 B1
7665123 Szor et al. Feb 2010 B1
7676691 Fachan et al. Mar 2010 B2
7680836 Anderson et al. Mar 2010 B2
7680842 Anderson et al. Mar 2010 B2
7685126 Patel et al. Mar 2010 B2
7685162 Heider et al. Mar 2010 B2
7689597 Bingham et al. Mar 2010 B1
7707193 Zayas et al. Apr 2010 B2
7716262 Pallapotu May 2010 B2
7734603 McManis Jun 2010 B1
7739288 Lemar et al. Jun 2010 B2
7743033 Patel et al. Jun 2010 B2
7752402 Fachan et al. Jul 2010 B2
7756898 Passey et al. Jul 2010 B2
7779048 Fachan et al. Aug 2010 B2
20010042224 Stanfill et al. Nov 2001 A1
20010047451 Noble et al. Nov 2001 A1
20010056492 Bressoud et al. Dec 2001 A1
20020010696 Izumi Jan 2002 A1
20020029200 Dulin et al. Mar 2002 A1
20020035668 Nakano et al. Mar 2002 A1
20020038436 Suzuki Mar 2002 A1
20020049778 Bell et al. Apr 2002 A1
20020055940 Elkan May 2002 A1
20020072974 Pugliese et al. Jun 2002 A1
20020075870 de Azevedo et al. Jun 2002 A1
20020078161 Cheng Jun 2002 A1
20020078180 Miyazawa Jun 2002 A1
20020083078 Pardon et al. Jun 2002 A1
20020083118 Sim Jun 2002 A1
20020087366 Collier et al. Jul 2002 A1
20020095438 Rising et al. Jul 2002 A1
20020107877 Whiting et al. Aug 2002 A1
20020124137 Ulrich et al. Sep 2002 A1
20020138559 Ulrich et al. Sep 2002 A1
20020156840 Ulrich et al. Oct 2002 A1
20020156891 Ulrich et al. Oct 2002 A1
20020156973 Ulrich et al. Oct 2002 A1
20020156974 Ulrich et al. Oct 2002 A1
20020156975 Staub et al. Oct 2002 A1
20020158900 Hsieh et al. Oct 2002 A1
20020161846 Ulrich et al. Oct 2002 A1
20020161850 Ulrich et al. Oct 2002 A1
20020161973 Ulrich et al. Oct 2002 A1
20020163889 Yemini et al. Nov 2002 A1
20020165942 Ulrich et al. Nov 2002 A1
20020166026 Ulrich et al. Nov 2002 A1
20020166079 Ulrich et al. Nov 2002 A1
20020169827 Ulrich et al. Nov 2002 A1
20020170036 Cobb et al. Nov 2002 A1
20020174295 Ulrich et al. Nov 2002 A1
20020174296 Ulrich et al. Nov 2002 A1
20020178162 Ulrich et al. Nov 2002 A1
20020191311 Ulrich et al. Dec 2002 A1
20020194523 Ulrich et al. Dec 2002 A1
20020194526 Ulrich et al. Dec 2002 A1
20020198864 Ostermann et al. Dec 2002 A1
20030005159 Kumhyr Jan 2003 A1
20030009511 Giotta et al. Jan 2003 A1
20030014391 Evans et al. Jan 2003 A1
20030033308 Patel et al. Feb 2003 A1
20030061491 Jaskiewicz et al. Mar 2003 A1
20030109253 Fenton et al. Jun 2003 A1
20030120863 Lee et al. Jun 2003 A1
20030125852 Schade et al. Jul 2003 A1
20030126522 English et al. Jul 2003 A1
20030131860 Ashcraft et al. Jul 2003 A1
20030135514 Patel et al. Jul 2003 A1
20030149750 Franzenburg Aug 2003 A1
20030158873 Sawdon et al. Aug 2003 A1
20030161302 Zimmermann et al. Aug 2003 A1
20030163726 Kidd Aug 2003 A1
20030172149 Edsall et al. Sep 2003 A1
20030177308 Lewalski-Brechter Sep 2003 A1
20030182312 Chen et al. Sep 2003 A1
20030182325 Manley et al. Sep 2003 A1
20030233385 Srinivasa et al. Dec 2003 A1
20040003053 Williams Jan 2004 A1
20040024731 Cabrera et al. Feb 2004 A1
20040024963 Talagala et al. Feb 2004 A1
20040078680 Hu et al. Apr 2004 A1
20040078812 Calvert Apr 2004 A1
20040117802 Green Jun 2004 A1
20040133670 Kaminsky et al. Jul 2004 A1
20040143647 Cherkasova Jul 2004 A1
20040153479 Mikesell et al. Aug 2004 A1
20040158549 Matena et al. Aug 2004 A1
20040174798 Riguidel et al. Sep 2004 A1
20040189682 Troyansky et al. Sep 2004 A1
20040199734 Rajamani et al. Oct 2004 A1
20040199812 Earl et al. Oct 2004 A1
20040205141 Goland Oct 2004 A1
20040230748 Ohba Nov 2004 A1
20040240444 Matthews et al. Dec 2004 A1
20040260673 Hitz et al. Dec 2004 A1
20040267747 Choi et al. Dec 2004 A1
20050010592 Guthrie Jan 2005 A1
20050033778 Price Feb 2005 A1
20050044197 Lai Feb 2005 A1
20050066095 Mullick et al. Mar 2005 A1
20050114402 Guthrie May 2005 A1
20050114609 Shorb May 2005 A1
20050125456 Hara et al. Jun 2005 A1
20050131860 Livshits Jun 2005 A1
20050131990 Jewell Jun 2005 A1
20050138195 Bono Jun 2005 A1
20050138252 Gwilt Jun 2005 A1
20050171960 Lomet Aug 2005 A1
20050171962 Martin et al. Aug 2005 A1
20050187889 Yasoshima Aug 2005 A1
20050188052 Ewanchuk et al. Aug 2005 A1
20050192993 Messinger Sep 2005 A1
20050289169 Adya et al. Dec 2005 A1
20050289188 Nettleton et al. Dec 2005 A1
20060004760 Clift et al. Jan 2006 A1
20060041894 Cheng Feb 2006 A1
20060047713 Gornshtein et al. Mar 2006 A1
20060047925 Perry Mar 2006 A1
20060053263 Prahlad et al. Mar 2006 A1
20060059467 Wong Mar 2006 A1
20060074922 Nishimura Apr 2006 A1
20060083177 Iyer et al. Apr 2006 A1
20060095438 Fachan et al. May 2006 A1
20060101062 Godman et al. May 2006 A1
20060129584 Hoang et al. Jun 2006 A1
20060129631 Na et al. Jun 2006 A1
20060129983 Feng Jun 2006 A1
20060155831 Chandrasekaran Jul 2006 A1
20060206536 Sawdon et al. Sep 2006 A1
20060230411 Richter et al. Oct 2006 A1
20060277432 Patel Dec 2006 A1
20060288161 Cavallo Dec 2006 A1
20060294589 Achanta et al. Dec 2006 A1
20070038887 Witte et al. Feb 2007 A1
20070091790 Passey et al. Apr 2007 A1
20070094269 Mikesell et al. Apr 2007 A1
20070094277 Fachan et al. Apr 2007 A1
20070094310 Passey et al. Apr 2007 A1
20070094431 Fachan Apr 2007 A1
20070094449 Allison et al. Apr 2007 A1
20070094452 Fachan Apr 2007 A1
20070124337 Flam May 2007 A1
20070168351 Fachan Jul 2007 A1
20070171919 Godman et al. Jul 2007 A1
20070192254 Hinkle Aug 2007 A1
20070195810 Fachan Aug 2007 A1
20070233684 Verma et al. Oct 2007 A1
20070233710 Passey et al. Oct 2007 A1
20070244877 Kempka Oct 2007 A1
20070255765 Robinson Nov 2007 A1
20080005145 Worrall Jan 2008 A1
20080010507 Vingralek Jan 2008 A1
20080021907 Patel et al. Jan 2008 A1
20080031238 Harmelin et al. Feb 2008 A1
20080034004 Cisler et al. Feb 2008 A1
20080044016 Henzinger Feb 2008 A1
20080046432 Anderson et al. Feb 2008 A1
20080046443 Fachan et al. Feb 2008 A1
20080046444 Fachan et al. Feb 2008 A1
20080046445 Passey et al. Feb 2008 A1
20080046475 Anderson et al. Feb 2008 A1
20080046476 Anderson et al. Feb 2008 A1
20080046667 Fachan et al. Feb 2008 A1
20080059541 Fachan et al. Mar 2008 A1
20080059734 Mizuno Mar 2008 A1
20080126365 Fachan et al. May 2008 A1
20080151724 Anderson et al. Jun 2008 A1
20080154978 Lemar et al. Jun 2008 A1
20080155191 Anderson et al. Jun 2008 A1
20080168304 Flynn et al. Jul 2008 A1
20080168458 Fachan et al. Jul 2008 A1
20080243773 Patel et al. Oct 2008 A1
20080256103 Fachan et al. Oct 2008 A1
20080256537 Fachan et al. Oct 2008 A1
20080256545 Fachan et al. Oct 2008 A1
20080294611 Anglin et al. Nov 2008 A1
20090055399 Lu et al. Feb 2009 A1
20090055604 Lemar et al. Feb 2009 A1
20090055607 Schack et al. Feb 2009 A1
20090125563 Wong et al. May 2009 A1
20090210880 Fachan et al. Aug 2009 A1
20090248756 Akidau et al. Oct 2009 A1
20090248765 Akidau et al. Oct 2009 A1
20090248975 Daud et al. Oct 2009 A1
20090249013 Daud et al. Oct 2009 A1
20090327218 Passey et al. Dec 2009 A1
20100011011 Lemar et al. Jan 2010 A1
20100122057 Strumpen et al. May 2010 A1
20100161556 Anderson et al. Jun 2010 A1
20100161557 Anderson et al. Jun 2010 A1
20100185592 Kryger Jul 2010 A1
20100223235 Fachan Sep 2010 A1
20100235413 Patel Sep 2010 A1
20100241632 Lemar et al. Sep 2010 A1
20100306786 Passey Dec 2010 A1
20110016353 Mikesell et al. Jan 2011 A1
20110022790 Fachan Jan 2011 A1
20110035412 Fachan Feb 2011 A1
20110044209 Fachan Feb 2011 A1
20110060779 Lemar et al. Mar 2011 A1
Foreign Referenced Citations (19)
Number Date Country
0774723 May 1997 EP
1421520 May 2004 EP
1563411 Aug 2005 EP
2284735 Feb 2011 EP
2299375 Mar 2011 EP
04096841 Mar 1992 JP
2006-506741 Jun 2004 JP
4464279 May 2010 JP
4504677 Jul 2010 JP
WO 9429796 Dec 1994 WO
WO 0057315 Sep 2000 WO
WO 0114991 Mar 2001 WO
WO 0133829 May 2001 WO
WO 02061737 Aug 2002 WO
WO 03012699 Feb 2003 WO
WO 2004046971 Jun 2004 WO
WO 2008021527 Feb 2008 WO
WO 2008021528 Feb 2008 WO
WO 2008127947 Oct 2008 WO
Related Publications (1)
Number Date Country
20090252066 A1 Oct 2009 US
Continuations (1)
Number Date Country
Parent 11256410 Oct 2005 US
Child 12484905 US