Source: http://www.google.es/patents/US5819275?dq=flatulence
Timestamp: 2013-05-22 11:21:43
Document Index: 4292585

Matched Legal Cases: ['art 1300', 'art 800', 'art 900', 'art 900', 'art 800', 'art 800', 'art 1000', 'art 1000', 'art 800', 'art 800', 'art 800', 'arts 900', 'art 900']

Patente US5819275 - System and method for superimposing attributes on hierarchically organized ... - Google PatentesB�squeda Im�genes Maps Play YouTube Noticias Gmail Drive M�s » B�squeda avanzada de patentes | Historial web | Iniciar sesi�n B�squeda avanzada de patentesPatentesA method for superimposing attributes on files stored in a hierarchically organized file system, having at least one file and at least one directory, is disclosed. The method initializes an attribute data base (ADB) with one or more entries having a path descriptor referencing a file in a hierarchical...http://www.google.es/patents/US5819275?utm_source=gb-gplus-sharePatente US5819275 - System and method for superimposing attributes on hierarchically organized file systems N�mero de publicaci�nUS5819275 ATipo de publicaci�nConcesi�n N�mero de solicitud08/475,991 Fecha de publicaci�n6 Oct 1998 Fecha de presentaci�n7 Jun 1995 Fecha de prioridad7 Jun 1995Tambi�n publicado comoUS6055527WO1996041283A1 InventoresLee BadgerDavid I. DalvaDavid L. ShermanDaniel F. SterneHomayoon Tajalli Cesionario originalTrusted Information Systems, Inc.Mcafee, Inc.Networks Associates Technology, Inc. Clasificaci�n de EE.UU.707/758707/E17.1707/803707/822707/999.1707/956707/999.202 Clasificaci�n internacionalG06F17/30 Clasificaci�n cooperativaG06F17/30067 Clasificaci�n europeaG06F 17/30FReferenciasCitas de patentes (9)Otras citas (24) Citada por (44)Enlaces externosUSPTO Cesi�n de USPTO EspacenetSystem and method for superimposing attributes on hierarchically organized file systemsUS 5819275 A Resumen A method for superimposing attributes on files stored in a hierarchically organized file system, having at least one file and at least one directory, is disclosed. The method initializes an attribute data base (ADB) with one or more entries having a path descriptor referencing a file in a hierarchical database, an attribute, and an attribute association option describing how the attribute is associated with the file referenced by the path descriptor. The method simplifies maintaining systems employing file attributes to describe files by using the hierarchy of the file system to superimpose attributes on the files. The method provides for handling explicit, implicit, and static associations of attributes with files in the file hierarchy. The method is invoked by a file manager, such as an attribute supplying file hierarchy (ASFH), which resides in the operating system of a computer system having a processor, memory, and a system bus for passing data between the processor and memory. The method can be part of a Hierarchical Attribute Superimposition Subsystem (HASS) which includes an ADB and an ASFH.
What is claimed is: 1. A method for managing a plurality of files each of which is capable of being referenced by a plurality of hardlinks, comprising the steps of: (1) maintaining a database having stored therein a plurality of attribute association entries, at least one of said plurality of attribute association entries having a path descriptor, an attribute, and an association option having a value of implicit; (2) receiving a database operation request specifying a first path descriptor referencing a file; (3) determining if there is at least one entry in said database having a path descriptor that is a prefix of said first path descriptor and also having an association option having a value of implicit; and (4) returning an attribute of an identified entry, said identified entry having a path descriptor that is a longest prefix of said first path descriptor referencing said file.
2. The method of claim 1, wherein said database has stored therein at least one attribute association entry having a path descriptor, an attribute, and an association option having a value of explicit, further comprising the following steps that are performed before step (3): (5) determining if there is a second entry in said database having a second path descriptor matching said first path descriptor, and also having an association option having a value of explicit; (6) returning at least one attribute of said second entry if said path descriptor of said second entry matches said first path descriptor referencing said file, and also if said second entry has an association option having a value of explicit; wherein step (3) is performed if step (5) does not identify said second entry.
3. The method of claim 1, further comprising the following step that is performed before step (1): (5) initializing said database with an initialization entry having a initial path descriptor, an initial attribute, and an initial association option having a value of explicit or implicit.
4. The method of claim 1, further comprising the steps of: (5) detecting instances where a particular file of said plurality of files has a different attribute or attributes corresponding to a plurality of hardlinks referencing said particular file; and (6) reporting said instances in response to a user request.
5. The method of claim 1, further comprising the following step: (5) returning an error if step (3) does not identify said entry.
6. A method for managing a plurality of files each of which is capable of being referenced by a plurality of hardlinks, comprising the steps of: (1) maintaining a database having stored therein a plurality of attribute association entries, at least one of said plurality of attribute association entries having a path descriptor, an attribute, and an association option having a value of implicit; (2) receiving a database operation request specifying a first path descriptor, at least a first attribute, and a first association option; (3) determining if said first association option has a value of implicit; (4) determining if there is an attribute association entry in said database having an association option having a value of implicit, and also having a path descriptor matching said first path descriptor; and (5) adding into said database an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option if there is no entry in said database having an association option having a value of implicit, and having a path descriptor matching said first path descriptor.
7. A system for managing a plurality of files each of which is capable of being referenced by a plurality of hardlinks, comprising: a database having stored therein a plurality of attribute association entries, at least one of said plurality of attribute association entries having a path descriptor, an attribute, and an association option having a value of implicit; receiving means for receiving a database operation request specifying a first path descriptor referencing a file; determining means for determining if there is at least one entry in said database having a path descriptor that is a prefix of said first path descriptor and also having an association option having a value of implicit; and returning means for returning an attribute of an identified entry, said identified entry having a path descriptor that is a longest prefix of said first path descriptor referencing said file.
8. The system of claim 7, wherein said database has stored therein at least one attribute association entry having a path descriptor, an attribute, and an association option having a value of explicit, further comprising: second determining means for determining if there is a second entry in said database having a second path descriptor matching said first path descriptor, and also having an association option having a value of explicit; second returning means for returning at least one attribute of said second entry if said path descriptor of said second entry matches said first path descriptor referencing said file, and also if said second entry has an association option having a value of explicit; wherein said first determining means is performed only if said second determining means does not identify said second entry.
9. The system of claim 7, further comprising: initializing means for initializing said database with an initialization entry having a initial path descriptor, an initial attribute, and an initial association option having a value of explicit or implicit.
10. The system of claim 7, further comprising: detecting means for detecting instances where a particular file of said plurality of files has a different attribute or attributes corresponding to a plurality of hardlinks referencing said particular file; and reporting means for reporting said instances in response to a user request.
11. The system of claim 7, further comprising: third returning means for returning an error if said determining means does not identify said entry.
12. A system for managing a plurality of files each of which is capable of being referenced by a plurality of hardlinks, comprising: a database having stored therein a plurality of attribute association entries, at least one of said plurality of attribute association entries having a path descriptor, an attribute, and an association option having a value of implicit; receiving means for receiving a database operation request specifying a first path descriptor, at least a first attribute, and a first association option; first determining means for determining if said first association option has a value of implicit; second determining means for determining if there is an attribute association entry in said database having an association option having a value of implicit, and also having a path descriptor matching said first path descriptor; and adding means for adding into said database an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option if there is no entry in said database having an association option having a value of implicit, and having a path descriptor matching said first path descriptor.
13. A system for managing files in a file system, comprising: a database having stored therein a plurality of attribute association entries, at least one of said plurality of attribute association entries having a path descriptor, an attribute, and an association option having a value of implicit; sending means for sending a file manipulation request to said database, said file manipulation request having a path descriptor referencing a file and an association option having a value equal to explicit or implicit; receiving means in said database for receiving said file manipulation request; first determining means for determining whether said file manipulation request requires a retrieval of an attribute from an entry in said database or a setting of an attribute in an entry in said database; second determining means for determining if there is at least one entry in said database having a path descriptor that is a prefix of said first path descriptor and also having an association option having a value of implicit; returning means for returning an attribute of said identified entry, said identified entry having a path descriptor that is a longest prefix of said first path descriptor referencing said file; and adding means for adding an attribute association entry having a path descriptor equal to said path descriptor in said file manipulation request, an attribute to be attributed to said file, and an association option equal to said association option in said file manipulation request. wherein, said second determining means and first returning means are responsive to a file manipulation request that requires an attribute to be retrieved from said entry and said first adding means is responsive to a file manipulation request that requires an attribute to be set in said database.
14. The system of claim 13, further comprising: creating means for creating one of a link and a file in said file system to associate a file with a particular hardlink; second creating means for creating an entry in said database having a created path descriptor, a created attribute, and a created association option having a value of one of explicit and implicit; and associating means for associating said path descriptor sent in said file manipulation request with said created path descriptor and said attribute association sent in said file manipulation request with said created attribute association option.
15. The system of claim 14, further comprising: first deleting means for deleting one of a link and a file from said file system; and second deleting means for deleting an attribute association entry from said database.
16. The system of claim 15, further comprising: renaming means for renaming a file in said file system; and first updating means for updating said database in accordance with said renamed file.
17. The system of claim 16, further comprising: moving means for moving a file in said file system; and second updating means for updating said database in accordance with said moved file.
18. In a hierarchically organized file system wherein each file is capable of being referenced by a plurality of hardlinks, a method of returning attributes values stored in a database, wherein the database has stored therein a plurality of attribute association entries, each attribute association entry including a path descriptor, at least one attribute, and an association option, said association option having a value selected from a group of values that includes a value of explicit and a value of implicit, the method comprising the steps of: (1) receiving a request specifying a first path descriptor referencing a file; (2) determining if there is at least one attribute association entry having a path descriptor that is a prefix of said first path descriptor and also having an association value of implicit; and (3) returning at least one attribute from an identified attribute association entry, said identified attribute association entry having a path descriptor that is a longest prefix of said first path descriptor referencing said file.
19. The method of claim 6, further comprising the step of: (6) returning an error if it is determined in step (4) that there is an entry having a path descriptor exactly matching said path descriptor referencing said file, and having an association option equal to implicit.
20. The method of claim 6, further comprising the step of: (6) adding into said database an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option if it is determined in step (4) that there is an entry having a path descriptor exactly matching said path descriptor referencing said file, and having an association option equal to implicit.
21. The method of claim 6, further comprising the steps of: (6) determining if there is an attribute association entry in said database having a path descriptor matching said first path descriptor, and also having an association option having a value of explicit; and (7) adding an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option if there is no entry in said database having a path descriptor matching said first path descriptor, and having an association option equal to explicit.
22. The method of claim 21, further comprising the step of: (8) replacing an attribute association entry, determined in step (6) to have a path descriptor matching said first path descriptor and having an association option having a value of explicit, with an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option, if the attribute association entry identified in step (6) does not have attributes matching at least said first attribute.
23. The method of claim 6, further comprising the following step to be performed before step (4): (6) determining if there is at least one entry in said database having a path descriptor that is a prefix of said first path descriptor and also having an association option having a value of implicit, a path descriptor of an identified entry having a longest prefix of said first path descriptor referencing said file, said identified entry having attributes that match at least said first attribute to be attributed to said file, wherein step (5) is performed only if there is no entry determined in step (6) having a longest prefix of said first path descriptor, and having attributes that match at least said first attribute.
24. The method of claim 6, further comprising the following step that is performed before step (1): (6) initializing said database with an initialization entry having a initial path descriptor, an initial attribute, and an initial association option having a value of one of explicit, implicit, and static explicit, and static implicit.
25. The method of claim 6, further comprising the steps of: (6) detecting instances where a particular file of said plurality of files has a different attribute or attributes corresponding to a plurality of hardlinks referencing said particular file; and (7) reporting said instances in response to a user request.
26. The system of claim 12, further comprising: returning means for returning an error if said second determining means determines that there is an entry having a path descriptor exactly matching said path descriptor referencing said file, and having an association option equal to implicit.
27. The system of claim 12, further comprising: adding means for adding into said database an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option if said second determining means determines that there is an entry having a path descriptor exactly matching said path descriptor referencing said file, and having an association option equal to implicit.
28. The system of claim 12, further comprising: third determining means for determining if there is an attribute association entry in said database having a path descriptor matching said first path descriptor, and also having an association option having a value of explicit; and second adding means for adding an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option if there is no entry in said database having a path descriptor matching said first path descriptor, and having an association option equal to explicit.
29. The system of claim 28, further comprising: replacing means for replacing an attribute association entry, that said third determining means determines to have a path descriptor matching said first path descriptor and having an association option having a value of explicit, with an attribute association entry having a path descriptor equal to said first path descriptor, attributes equal to at least said first attribute, and an association option equal to said first association option, if the attribute association entry identified in step (6) does not have attributes matching at least said first attribute.
30. The system of claim 12, further comprising: third determining means for determining if there is at least one entry in said database having a path descriptor that is a prefix of said first path descriptor and also having an association option having a value of implicit, a path descriptor of an identified entry having a longest prefix of said first path descriptor referencing said file, said identified entry having attributes that match at least said first attribute to be attributed to said file, wherein said adding means is invoked only if said third determining means determines that there is no entry having a longest prefix of said first path descriptor, and having attributes that match at least said first attribute.
31. The system of claim 12, further comprising: initializing means for initializing said database with an initialization entry having a initial path descriptor, an initial attribute, and an initial association option having a value of one of explicit, implicit, and static explicit, and static implicit.
32. The system of claim 12, further comprising: detecting means for detecting instances where a particular file of said plurality of files has a different attribute or attributes corresponding to a plurality of hardlinks referencing said particular file; and reporting means for reporting said instances in response to a user request.
33. A computer program product for use with a computer system, comprising: a computer usable medium having computer readable program code means embodied in said medium for enabling the computer system to implement, in a hierarchically organized file system wherein each file is capable of being referenced by a plurality of hardlinks, a method of returning attributes values stored in a database, wherein the database has stored therein a plurality of attribute association entries, each attribute association entry including a path descriptor, at least one attribute, and an association option, said association option having a value selected from a group of values that includes a value of explicit and a value of implicit, said computer readable program code means including, computer readable program code means for enabling a computer to effect a reception of a request specifying a first path descriptor referencing a file; computer readable program code means for enabling a computer to effect a determination of whether there is at least one attribute association entry having a path descriptor that is a prefix of said first path descriptor and also having an association value of implicit; and computer readable program code means for enabling a computer to effect a return of at least one attribute from an identified attribute association entry, said identified attribute association entry having a path descriptor that is a longest prefix of said first path descriptor referencing said file.
SUMMARY OF THE INVENTION The present invention overcomes the aforementioned deficiencies of conventional computer systems through a novel system and method of associating attributes with files stored in hierarchically organized file systems. Because the invention does not alter media formats or file contents, it maintains compatibility with existing file systems and applications interacting with files in those existing file systems. The invention is not limited to the one-to-one storage strategy used by conventional systems. This is because it uses the hierarchical organization of file systems to associate one physical copy of an attribute with one or more files. That is, the invention employs the concept of "implicit binding." An advantage of implicit binding is that it reduces the system resources required for storing file attributes. Moreover, implicit binding of attributes with files allows the representation of the bindings to be much more concise and simple. This feature of the present invention facilitates human administration of attribute bindings. Moreover, the present invention is capable of associating attributes with files which are accessed by different names. Thus, the present invention is capable of associating attributes with files even though the files have multiple hardlinks to them.
The present invention operates as follows. The invention associates an attribute data base (ADB) with an attribute supplying file hierarchy (ASFH). The ADB comprises one or more arbitrary associations of attributes with files. The ASFH represents a hierarchical organization of files on a particular storage medium. A Hierarchical Attribute Superimposition Subsystem (HASS) is the composition of one or more ASFHs with an ADB. The invention receives a HASS operation request containing one or more parameters. If the received operation request is a file.sub.-- create( ) operation, the invention creates the file in the ASFH and updates the ADB. If the received operation request is a link.sub.-- create( ) operation, the invention creates a link in the ASFH and updates the ADB. If the received operation request is a link.sub.-- delete( ) operation, the invention deletes the link from the ASFH. If the received operation is a get.sub.-- attributes( ) operation, the invention retrieves the appropriate attributes. After, processing a received operation, the invention waits for the next HASS operation to process.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The preferred embodiment of the present invention is generally referred to as a Hierarchical Attribute Superimposition Subsystem (HASS). FIG. 12 shows the general structure of a HASS 1200. FIG. 13 depicts a flowchart 1300 illustrating the preferred method of the HASS 1200. Both figures will be described in detail below. The HASS 1200 provides a mechanism to associate attributes with files in a collection of file systems. Furthermore, it provides a way to add attributes to files stored on computer systems that use hierarchical file systems. The HASS 1200 according to the present invention permits a unique, i.e. different, attribute to be associated with each file in a file system. In addition, it allows groups of files in a file system to share the same attribute. A HASS according to the present invention provides at least the following advantages: compatibility, ease of configuration, simplicity, performance, and flexibility.
file.sub.-- create(pd, attr)
The file.sub.-- create() operation creates a new file described by the path descriptor 1100, "pd." In addition, it associates an attribute 402 "attr" with the new file. Both the path descriptor 1100 and the attribute 402 values may be provided explicitly as parameters to the file creation operation by an entity that requests that the ASFH create a file. An example of such an entity is a user process. In another preferred embodiment of the present invention, the parameters for the file.sub.-- create() operation are provided by context information known to the system. Such context information may reside in a global system state.
link.sub.-- create(pd, attr)
The link.sub.-- create() operation associates an additional unique path name with an existing file. Thus, a file may simultaneously be associated with many path names in the file system. The path name is represented by the path descriptor 1100, pd, parameter. In an alternative embodiment of the present invention, parameters are provided by a system context. The attribute parameter, attr, is optional in the link.sub.-- create() operation. For systems where a file should have the same attribute value regardless of the path used to access them, all links to a file should associate the same attribute value with the file.
link.sub.-- delete(pd)
The link.sub.-- delete() operation removes a path name associated with a file. The path name is represented by the path descriptor 1100, pd. In an alternative embodiment of the present invention, parameters are provided by system context. An example of a system context is a global system state. When the last link to a file is deleted, the file itself is also deleted.
get.sub.-- attribute(pd, attr)
The get.sub.-- attribute() operation retrieves the attribute 402, attr, associated with the file specified by path descriptor 1100, pd. In an alternative embodiment of the present invention, parameters are provided by system context. An example of a system context is a global system state. In yet another preferred embodiment of the present invention, get.sub.-- attributes has three parameters: path descriptor 1100, pd, attribute association option 702, option, and attribute 402, attr. Invocation of get.sub.-- attributes(pd, option, attr) retrieves the association option 702, option, and attribute 402, attr, associated with the file specified by path descriptor 1100, pd. In the case that there is more than one association option 702 and attribute 402 stored by the system for a single path descriptor 1100, get.sub.-- attributes() returns all of the association options 702 in parameter option and all of the attributes 402 in parameter attr. The association options 702 and attributes 402 are returned to the caller of get.sub.-- attributes() in such a manner that the caller can identify which association option 702 corresponds to which attributes 402.
In a preferred embodiment of the present invention, the ASFH 500 includes a move(pd1,pd2,attr) function. The purpose of move() is to move a file from one hardlink to another. In the preferred embodiment, the attributes 402 may be changed with the move. In an alternative preferred embodiment, move() is not permitted to modify the attributes 402. In the preferred embodiment, move() is implemented as a link.sub.-- delete(pd1) followed by a link.sub.-- create(pd2,attr). It would be apparent to a person skilled in the relevant art that other implementations are possible.
In a preferred embodiment of the present invention, the ASFH 500 includes a rename(pd1,pd2,attr) function. The purpose of the rename() function is to rename a file in the file system. In the preferred embodiment, the attributes 402 may be changed with rename(). In an alternative preferred embodiment, rename() is not permitted to modify the attributes 402. In the preferred embodiment, rename() is implemented as a link.sub.-- delete(pd1) followed by a link.sub.-- create(pd2,attr). It would be apparent to a person skilled in the relevant art that other implementations are possible. For example, a DOS embodiment, because it must emulate a DOS copy function, would invoke file.sub.-- create(pd2,attr), followed by link.sub.-- delete(pd1).
In a preferred embodiment of the present invention, multiple ASFHs 500 are combined. An fnode 401 or dnode 400, 406 in a graph, of ASFH.sub.1 is associated with the root file 406 of another ASFH, ASFH.sub.2. The association merges the two hierarchies. The root file 406 of ASFH.sub.1 becomes the root file of the merged ASFHs. This process is sometimes referred to as "mounting."
As shown in FIG. 6, a service request 203 from a user state process 202 passes through a system call interface 204. The operating system 200 then calls one or more ASFH operations 501 before returning results to the user state process 202. Note that ASFH operations do not always return results to the user state process 202. If multiple ASFHs 500 have been combined, a single service request 203 may be forwarded to multiple ASFHs 500. This would occur, for example, where a path name spans the node at which the ASFHs 500 were combined. As an example of spanning, assume the root of an ASFH.sub.2 is joined to the path "/a/b" for ASFH.sub.1. An operation to access file "/a/b/c" would first search for "/a/b" on ASFH.sub.1 and then search for "c" on ASFH.sub.2.
According to the present invention, attributes are stored in an Attribute Data Base (ADB). An attribute association is the association of an attribute structure 402 with a path descriptor 1100. Referring to FIG. 7A, an ADB 700 is described. An ADB 700 comprises one or more attribute associations 701 to files, or sets of files, within an ASFH 500. An ADB 700 according to the preferred embodiment of the present invention supports two ADB operations 704, get.sub.-- attributes() and set.sub.-- attributes(). Access to these operations is provided through interface 705). Get.sub.-- attributes() retrieves the attributes 402 of an attribute association 701 in ADB 700. In another preferred embodiment of the present invention, get.sub.-- attributes retrieves the association option 702, option, and attribute 402, attr, of an attribute association 701 in ADB 700. Set.sub.-- attributes() adds a new attribute association 701 to the ADB 700.
In the preferred embodiment of the present invention, two parameters are passed to the function get.sub.-- attributes(). They are a path descriptor 1100, pd and a parameter to receive attributes 402, attr. The attributes are returned in attr. Similarly, in the preferred embodiment of the present invention, set.sub.-- attributes() is implemented as a function having three parameters, pd, option, and attr. The parameter "pd" is a path descriptor 1100. The parameter "option" is an association option 702. The parameter "attr" is an attribute 402. In another preferred embodiment of the present invention, get.sub.-- attributes() is a function having three parameters: path descriptor 1100, pd, attribute association option 702, option, and attribute 402, attr. Invocation of get.sub.-- attributes(pd, option, attr) retrieves the association option 702, option, and attribute 402, attr, associated with the file specified by path descriptor 1100, pd. In the case that there is more than one association option 702 and attribute 402 stored by the system for a single path descriptor 1100, get.sub.-- attributes() returns all of the association options 702 in parameter option and all of the attributes 402 in parameter attr. The association options 702 and attributes 402 are returned to the caller of get.sub.-- attributes() in such a manner that the caller can identify which association option 702 corresponds to which attributes 402.
The preceding embodiments represent only a few of the ways in which set.sub.-- attributes() and get.sub.-- attributes() might be implemented. It should be noted that many implementations are possible without deviating from the scope and spirit of the present invention. It would be apparent to a person skilled in the relevant art that get.sub.-- attributes() and set.sub.-- attributes() are implementable in a variety of ways.
In an alternative embodiment of the present invention, the ADB 700 supports a delete.sub.-- association(pd,option) operation. The delete.sub.-- association operation deletes an association having a path descriptor 1100 matching pd and an association option 702 matching option.
With reference to FIGS. 8-10, the operation of ADB 700 is described. ADB 700 processing begins in step 802 on flowchart 800. In step 802, control immediately passes to step 804. Step 804 sets ADB 700 to an empty state. In one embodiment of the present invention, ADB 700 is initialized (not shown) by reading the contents of a distinct ADB initialization file (not shown) when computer system 100 is initialized. In an alternative embodiment, ADB 700 is initialized (not shown) by one or more calls to set.sub.-- attributes() to set the initial state of ADB 700. Control transitions to step 806 which begins a main control loop. The main loop comprises steps 806, 808, 810, 820, 822, 824, and 826. The ADB 700 waits in step 806 until it receives a request for an ADB operation 704. Upon receiving a request for an ADB operation 704, the ADB 700 determines whether its received request was for a get.sub.-- attributes() operation or a set.sub.-- attributes() operation. ASFH 500 accesses ADB 700 via ADB interface 705.
If ADB 700 determined that it received a get.sub.-- attribute() operation then control transfers to step 808 where the ADB 700 performs the get.sub.-- attributes() operation. In a preferred embodiment of the present invention, get.sub.-- attributes() passes two parameters. The first is a path descriptor 1100, pd, indicating where the desired attributes are located. The second parameter is an attribute structure 402, attr, in which the attribute value or values will be returned. The get.sub.-- attributes(pd, attr) operation is described in more detail in flowchart 900 in FIG. 9. Thus, from step 808, the ADB 700 transfers control through step 820 to step 902 of flowchart 900. In step 902, the ADB 700 determines whether the ADB 700 contains an explicit association matching path descriptor parameter pd.
If the ADB 700 in step 902 determines that it does not contain a matching explicit association, it searches, in the ADB 700, for the implicit association having as its path descriptor the longest prefix of path descriptor pd as shown in step 908. If it finds no such implicit association, then the ADB 700 concludes that it does not contain an attribute association that satisfies the received ADB request. Thus, ADB 700 returns an error in step 912 and returns to the main loop, step 806 in flowchart 800, through step 824. If, the ADB search in step 908 reveals the presence of an implicit association having as its longest path descriptor 1100 the longest prefix of path descriptor pd, ADB 700 proceeds to stop 910. In step 910, ADB 700 returns, in parameter attr, the value of the attribute associated with the implicit association found in step 908. In an alternative preferred embodiment (not shown) of the present invention, get.sub.-- attributes() has a third parameter, option. In the alternative preferred embodiment, attribute association option 702 corresponding to returned attribute 402 is returned in parameter option in addition to returning attribute 402 in parameter attr. Control then passes through step 824 to the main loop, step 806 in flowchart 800.
Referring to FIG. 8, if ADB 700 in step 806 determined that it received a set.sub.-- attributes() operation then control transfers to step 810 where the ADB 700 performs the set.sub.-- attributes() operation. In a preferred embodiment of the present invention, set.sub.-- attributes() passes three parameters. The first is a path descriptor 1100. The second is an attribute association option 702. The third is one or more attributes 402. The set.sub.-- operation(pd, option, attr) is described in more detail in flowchart 1000 in FIG. 10. Thus, from step 810, the ADB 700 transfers control through step 822 to step 1002 of flowchart 1000. In step 1002, the ADB 700 determines whether the association option parameter of the received request is explicit or implicit.
If ADB 700 in step 1002 determines that the association option is explicit, control transfers to step 1004. In step 1004, ADB 700 determines whether it contains an explicit association matching path descriptor pd. If ADB 700 in step 1004 determines that there is no such explicit association in ADB 700, one is added as shown in step 1010. Processing then returns, through step 826, to the main loop, step 806 in flowchart 800. If ADB 700 determines that it contains an explicit association exactly matching path descriptor pd, it determines whether the attributes existing for the matching path descriptor exactly match those in attribute parameter attr. ADB 700 makes this determination in step 1006. If the attributes do not match, then ADB 700 proceeds to step 1008 in which it replaces the existing association with an association in accordance with the parameters passed by the set.sub.-- attributes(pd, option, attr) operation. Processing then returns, through step 826 to the main loop 806 in flowchart 800. If the attributes match in step 1006, the replacement step 1008 is bypassed because there is no need to replace the attributes. ADB 700 then returns, through step 826, to the main loop 806 in flowchart 800. It is noted that it would apparent to one ordinarily skilled in the art that the replacement step could be used all the time. That is, a system using the present invention could always replace the attributes as shown in step 1008, thereby forgoing the attribute equivalence check in step 1006. However, this may not be efficient in cases where the attributes are very complex, in which case a simple check may be more efficient than blindly replacing the attributes.
In an alternative preferred embodiment (not shown) of the present invention, set.sub.-- attributes() searches, in the ADB 700, for the implicit association having as its path descriptor the longest prefix of path descriptor pd. If there is such an association and its attribute 402 matches parameter attr, attribute 402, set.sub.-- attributes() merely returns to the program which invoked it.
An example of the operation of the flowcharts 900 and 1000 is given in FIG. 14. FIG. 14 represents an example of a hierarchically organized file system 1400. In the illustrated file system, there are 6 files, 1401, 1402, 1403, 1404, 1405, and 1406. In addition there are 4 directories, 1411, 1412, 1413, and 1414. As previously explained, each directory is a kind of file. Assume further, that there are 4 attributes attr1, attr2, attr3, and attr4. Using set.sub.-- attributes(attr, option, pd), the attributes can be assigned to the files and directories in an arbitrary manner. Note the attributes can be assigned one or more at a time. An example is illustrated in FIG. 14 where the attributes attr1, attr2, attr3, and attr4 have been associated in an arbitrary manner with the files or directories, more specifically with a path descriptor to each file or directory. For example, directory 1411, has attr1 and attr2 associated with it. In addition to attribute associations, the association option, implicit or explicit, has been designated. Thus, to set the attributes for directory 1411, the following set.sub.-- attributes command would be used: set.sub.-- attributes("/1411","explicit",attrs), where attrs is a structure comprising attributes attr1 and attr2. FIG. 15 illustrates the status of the ADB 700 after the operation of set.sub.-- attributes(attr, option, pd) for this example.
The get.sub.-- attributes(pd, attr) is described with reference to FIGS. 9, 14 and 15. By the logic of flowchart 900, get.sub.-- attributes("/1411", attrs) returns attributes attr1 and attr2 in parameter attrs. Get.sub.-- attributes("/1411/1412/1413/1404",attrs) returns attributes attr1 and attr3 in parameter attrs. This is because get.sub.-- attributes(pd, attr) returns the attributes corresponding to the implicit association whose as its path descriptor has the longest prefix of "/1411/1412/1413/1404". Similarly, get.sub.-- attributes("/1411/1412/1413", attrs) returns attributes attr1 and attr3 in attrs. This is because the implicit association having as its path descriptor the longest prefix of "/1411/1412/1413" has a path descriptor "/1411/1412/1413". This illustrates that every path descriptor is a prefix of itself. Get.sub.-- attributes("/1411/1401", attrs) returns an error because there is no longest prefix of "/1411/1401" which is implicit. Get.sub.-- attributes("/1411/1412/1413/1414", attrs) returns attribute attr1 in parameter attrs. This demonstrates that get.sub.-- attributes(pd, attr) treats an ADB association 701 having an explicit association option 702 as having priority over an ADB association 701 having an implicit association option 702. In a similar manner, get.sub.-- attributes("/1411/1412/1402", attrs) returns attributes attr1 and attr4 in parameter attrs. Get.sub.-- attributes("/1411/1412/1413/1414/1406", attrs) returns attributes attr1 and attr3 in parameter attrs. This is because the implicit association having the longest prefix of "/1411/1412/1413/1414/1406", attrs) is "/1411/1412/1413." Get.sub.-- attributes("1411/1412", attrs) returns attr1 because, for a particular path descriptor, an attribute association 704 having an association option 702 having a value of explicit takes precedence over an attribute association having an association option 702 having a value of implicit. Get.sub.-- attributes("/1411/1412/1403", attrs), however, returns attributes attr1, attr2, and attr4 in parameter attrs.
It would be apparent to a person skilled in the relevant art that many alternative embodiments of the present invention are possible. For example, in one alternative embodiment, a system might require that unique path name descriptors be passed to an ADB 700 in a set.sub.-- attribute(pd, option, attr) operation. Another alternative embodiment provides "garbage collection" that would also remove associations that no longer have an effect. These and other variations fall within the scope and spirit of the present invention.
FIG. 12 shows the structure of the HASS 1200. The HASS 1200 has HASS Operations 1201 (access to which are provided via an interface 1220) that are similar to those included in the ASFH Operations 501, an ADB 700, one or more ASFH 500 subsystems, and an attribute controller 1202. The HASS 1200 connects the ASFH 500 subsystems to the ADB 700 so that the ADB 700 satisfies the attribute retrieval and storage needs of the ASFH 500 subsystems. The attribute controller 1202 connects ASFH operations 501 with ADB operations 704 so that ASFH 500 operations that require an attributes object 402 to be stored are satisfied by the ADB operation set.sub.-- attributes(). Operations that require retrieval of an attributes object 402 are satisfied by the ADB operation get.sub.-- attributes(). In an alternative embodiment of the present invention, the attribute controller 1202 is distributed among the ASFH 500 subsystems.
If the received operation request is a file.sub.-- create(pd, attr) operation then the system creates a new dnode 400 or fnode 401 in step 1306. Thus, the method must associate attributes 402 with the created directory 300 or file 403. The method in step 1308 calls the ADB set.sub.-- attribute() operation, described above, with parameters pd, option, and attr. After creating a new ADB association 701, the method transfers to step 1310. In step 1310, the ASFH operation file.sub.-- create() is called with parameters pd and attr resulting in the creation of a new directory 300 or file 403 and associated attributes 402. The method then transfers control to step 1302 where the method is repeated.
If the received operation request is a link.sub.-- create(pd, attr) operation, then the system creates a link in step 1312. The process is analogous to the process described above for file creation. Thus, in step 1314, the method calls the ADB set.sub.-- attributes() operation with parameters pd and attr. After creating a new ADB association 701 corresponding to the link, the method physically creates the link by calling, in step 1316, the ASFH 500 operation link.sub.-- create() with parameters pd and attr. Control then returns to step 1304 where the method awaits a subsequent HASS operation request.
If the received operation request is a link.sub.-- delete() operation, the system removes a file in step 1318. Control transfers to step 1320 where the actual link is deleted from the file system. This is accomplished by calling the ASFH 500 operation link.sub.-- delete() with the parameter pd. As described above, when the last link to a file is deleted, the file is also deleted. Control then returns to step 1304 where the method awaits a subsequent HASS operation request.
If the received operation request is a get.sub.-- attributes() operation, the system retrieves attributes 402 from the corresponding link or file. The system transfers to step 1321, where it invokes the ADB operation get.sub.-- attributes(). In step 1322, the system retrieves attributes 402 from the ADB 700 according to the parameters passed in the ADB 700 get.sub.-- attributes() call. In an alternative preferred embodiment (not shown), the system retrieves attributes 402 by calling ASFH operation 501 get.sub.-- attributes(). In the alternative preferred embodiment, get.sub.-- attributes() satisfies the received operation request by calling ADB operation 704 get.sub.-- attributes(pd,attr). In step 1323, the system physically transfers the retrieved attributes 402 to the operating system in the parameter attr. According to an alternative preferred embodiment (not shown) of the present invention, get.sub.-- attributes() retrieves association option 702 in addition to attribute 402. According to yet another preferred embodiment of the present invention, get.sub.-- attributes() retrieves attributes 402 from a system context, such as a global system state, without explicit parameter passing. Control then returns to step 1304 where the method awaits a subsequent HASS operation request.
Continuing the example of FIGS. 14 and 15, the hierarchical structure shown in FIG. 14 would be set up using the HASS file.sub.-- create(pd, attr) operation which invokes the ASFH file.sub.-- create(pd, attr) operation. The attributes to be associated with a particular path descriptor 1100 are passed to the ADB 700 via the ASFH 500 using the attr parameter of a file.sub.-- create(pd,attr) function. To associate multiple hardlinks with a particular file, the HASS link.sub.-- create(pd,attr) operator invokes the ASFH link.sub.-- create(pd,attr) operator. Note that no attr need be passed. That is, if attr is null, the link will just associate a name with a path descriptor. Attributes existing at that path descriptor remain unchanged. When the file or link is created, the ASFH invokes the necessary ADB operations.
An alterative preferred embodiment of the present invention includes "static" as a third attribute association option 702. In the alternative preferred embodiment, static is used to prevent modification of attribute associations (that have been assigned the value of static) after the ADB is initialized, in step 1302, with associations of attributes 402, association options 702, and path descriptors 1100. In the alternative preferred embodiment, static serves to further describe the explicit or implicit attribute association option 702. Implementation of static in the alternative preferred embodiment affects steps 1008, 1010, and 1016 in FIG. 10. Steps 1008 and 1016 would include a step (not shown) to determine whether the attribute association option 702 is static. If it is, set.sub.-- attributes() exits, through step 826 to the main loop, step 806. Step 1010 would include a step to determine if there is an association option 702 having a longest prefix of path descriptor 1100 pd which had a value of implicit and also a value of static. If there is such an association option 702, step 1010 exits through step 826 to the main loop, step 806.
Citas de patentes Patente citada Fecha de presentaci�n Fecha de publicaci�n Solicitante T�tuloUS447919615 Nov 198223 Oct 1984At&T Bell LaboratoriesHyperedge entity-relationship data base systemsUS462132116 Feb 19844 Nov 1986Honeywell Inc.Secure data processing system architectureUS470184020 Jun 198620 Oct 1987Honeywell Inc.Secure data processing system architectureUS471375321 Feb 198515 Dic 1987Honeywell Inc.Secure data processing system architecture with format controlUS504791819 Dic 198810 Sep 1991Tektronix, Inc.File management systemUS521869617 Sep 19928 Jun 1993International Business Machines CorporationMethod for dynamically expanding and rapidly accessing file directoriesUS53177287 Sep 199031 May 1994International Business Machines CorporationStorage management of a first file system using a second file system containing surrogate files and catalog management informationUS536767125 Sep 199022 Nov 1994International Business Machines Corp.System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tablesUS549935810 Dic 199312 Mar 1996Novell, Inc.Method for storing a database in extended attributes of a file systemOtras citasReferencia1 Final Evaluation Report: TIS Trusted XENIX Version 3.0 , Trusted Information Systems, Inc., Chapter 2, pp. 45, Apr. 8, 1992.2 Trusted Mach Philosophy of Protection , NIST Document No.: TMACH/93 014, Trusted Information Systems, Inc., Glenwood, MD, Chapter 5 pp. 11 12, 20, May 21, 1993.3 Trusted Mach System Architecture , NIST Document No.: TMACHI/94 065, Trusted Information Systems, Inc., Glenwood, MD, Chapter 2, pp. 10 12, Aug. 29, 1994.4 Use of Subfiles as am Internal Organization Method, IBM Technical Disclosure Bulletin , vol. 33, No. 9, Feb. 1, 1991, pp. 182 183.5"Final Evaluation Report: TIS Trusted XENIX Version 3.0", Trusted Information Systems, Inc., Chapter 2, pp. 45, Apr. 8, 1992.6"Trusted Mach TMACH/93-014, Trusted Information Systems, Inc., Glenwood, MD, Chapter 5 pp. 11-12, 20, May 21, 1993.7"Trusted Mach Trusted Information Systems, Inc., Glenwood, MD, Chapter 2, pp. 10-12, Aug. 29, 1994.8"Use of Subfiles as am Internal Organization Method," IBM Technical Disclosure Bulletin, vol. 33, No. 9, Feb. 1, 1991, pp. 182-183.9Bach, Maurice J., "The Design of the UNIX Operating System", Prentice-Hall Software Series, Chapter 4-5, pp. 60-145.10Bach, Maurice J., "The Design of the UNIX System", Prentice-Hall Software Series, Chapter 4-5, pp. 60-145.11Bach, Maurice J., The Design of the UNIX Operating System , Prentice Hall Software Series, Chapter 4 5, pp. 60 145.12Bach, Maurice J., The Design of the UNIX System , Prentice Hall Software Series, Chapter 4 5, pp. 60 145.13King, Adrian, "Inside Windows 95", Microsoft Press, Chapter 5, pp. 213-215, Chapter 7, pp. 282-289.14King, Adrian, Inside Windows 95 , Microsoft Press , Chapter 5, pp. 213 215, Chapter 7, pp. 282 289.15Lampen et al., "An Object Base for Attributed Software Objects," New Directions for Unix. Proceedings of the Autumn 1988 EUUG Conference, Cascais, Portugal, Oct. 3-7, 1988, pp. 95-105.16Lampen et al., An Object Base for Attributed Software Objects, New Directions for Unix. Proceedings of the Autumn 1988 EUUG Conference, Cascais, Portugal, Oct. 3 7, 1988, pp. 95 105.17Sechrest et al., "Blending Hierarchical and Attribute-Based File Naming" Proceedings of the 12th International Conference on Distributed Computing Systems, Yokohama, Japan, Jun. 9-12, 1992, pp. 572-580.18Sechrest et al., "Blending Hierarchical and Attribute-Based File Naming," Proceedings of the 12th International Conference on Distributed Computing Systems, Yokohama, Japan, Jun. 9-12, 1992 pp. 572-580.19Sechrest et al., Blending Hierarchical and Attribute Based File Naming Proceedings of the 12th International Conference on Distributed Computing Systems, Yokohama, Japan, Jun. 9 12, 1992, pp. 572 580.20Sechrest et al., Blending Hierarchical and Attribute Based File Naming, Proceedings of the 12th International Conference on Distributed Computing Systems, Yokohama, Japan, Jun. 9 12, 1992 pp. 572 580.21Transarc Corp., AFS System Administrator s Guide 2.1:5 (Pittsburg, PA 1993).22Transarc Corp., AFS System Administrator's Guide PA 1993).23Transarc Corp., AFS User s Guide, 1.4.:2 (Pittsburg, PA 1993).24Transarc Corp., AFS User's Guide, Citada por Patente citante Fecha de presentaci�n Fecha de publicaci�n Solicitante T�tuloUS594084111 Jul 199717 Ago 1999International Business Machines CorporationParallel file system with extended file attributesUS60555278 May 199825 Abr 2000Network Associates, Inc.System, method and computer program product for superimposing attributes on hierarchically organized file systemsUS605553419 Jul 199625 Abr 2000Fuji Xerox Co., Ltd.File management system and file management methodUS618557426 Nov 19976 Feb 20011Vision, Inc.Multiple display file directory and file navigation system for a personal computerUS628601328 Ene 19974 Sep 2001Microsoft CorporationMethod and system for providing a common name space for long and short file names in an operating systemUS630488329 Jul 199716 Oct 2001Samsung Electronics Co., Ltd.Technique for managing files in telephone switching systemUS645701716 May 199724 Sep 2002Softscape, Inc.Computing system for information managementUS649683727 Jun 200017 Dic 20021Vision Software, Inc.Multiple attribute file directory manipulation and navigation systemUS65196129 Ago 200011 Feb 20031Vision Software, Inc.Internet storage manipulation and navigation systemUS665495417 Feb 199825 Nov 2003International Business Machines CorporationComputer system, program product and method utilizing executable file with alternate program code attached as a file attributeUS667870027 Abr 200013 Ene 2004General AtomicsSystem of and method for transparent management of data objects in containers across distributed heterogenous resourcesUS680469121 Mar 200212 Oct 2004Hewlett-Packard Development Company, L.P.Method for optimization of memory usage for a computer programUS693141011 Ene 200216 Ago 2005International Business Machines CorporationMethod, apparatus, and program for separate representations of file system locations from referring file systemsUS70586481 Dic 20006 Jun 2006Oracle International CorporationHierarchy-based secured document repositoryUS706574311 Jul 200220 Jun 2006International Business Machines CorporationApparatus and method for caching analyzed program informationUS713388323 Dic 20027 Nov 2006Sun Microsystems, Inc.General techniques for diagnosing data corruptionsUS726960424 Oct 200311 Sep 2007General AtomicsSystem of and method for transparent management of data objects in containers across distributed heterogenous resourcesUS735343225 Nov 20031 Abr 2008Sun Microsystems, Inc.Maintaining high data integrityUS75027821 Nov 200410 Mar 2009Oracle International CorporationDatabase-managed file systemUS752314621 Jun 200521 Abr 2009Apple Inc.Apparatus and method for peer-to-peer N-way synchronization in a decentralized environmentUS762062015 May 200017 Nov 2009Oracle International CorporationBasing directory contents on a query that is associated with a file identifierUS762754729 Nov 20041 Dic 2009Oracle International CorporationProcessing path-based database operationsUS76896341 Nov 200530 Mar 2010Oracle International CorporationFlexible approach to store attribute information (META-DATA) related to files of a file systemUS77973108 Mar 200714 Sep 2010Oracle International CorporationTechnique to estimate the cost of streaming evaluation of XPathsUS779767014 Abr 200614 Sep 2010Apple Inc.Mirrored file systemUS780185021 May 200721 Sep 2010General AtomicsSystem of and method for transparent management of data objects in containers across distributed heterogenous resourcesUS78229225 Mar 200726 Oct 2010Apple Inc.Accessing data storage systems without waiting for read errorsUS782717729 May 20072 Nov 2010Oracle International CorporationManaging compound XML documents in a repositoryUS787359623 May 200718 Ene 2011Microsoft CorporationExtending cluster allocations in an extensible file systemUS789517629 Nov 200622 Feb 2011Red Hat, Inc.Entry group tagsUS792107615 Dic 20045 Abr 2011Oracle International CorporationPerforming an action in response to a file system eventUS793027721 Abr 200419 Abr 2011Oracle International CorporationCost-based optimizer for an XML data repository within a databaseUS793739813 Oct 20103 May 2011Oracle International CorporationManaging compound XML documents in a repositoryUS79581128 Ago 20087 Jun 2011Oracle International CorporationInterleaving query transformations for XML indexesUS80738417 Oct 20056 Dic 2011Oracle International CorporationOptimizing correlated XML extractsUS813176615 Dic 20046 Mar 2012Oracle International CorporationComprehensive framework to integrate business logic into a repositoryUS817600711 Feb 20118 May 2012Oracle International CorporationPerforming an action in response to a file system eventUS822993218 May 200424 Jul 2012Oracle International CorporationStoring XML documents efficiently in an RDBMSUS825039717 Dic 200921 Ago 2012Apple Inc.N-way synchronization of dataUS832137411 Feb 200927 Nov 2012Apple Inc.Peer-to-peer N-way syncing in decentralized environmentUS832143920 Feb 200927 Nov 2012Microsoft CorporationQuick filename lookup using name hashUS833577515 May 200018 Dic 2012Oracle International CorporationVersioning in internet file systemUS835605320 Oct 200515 Ene 2013Oracle International CorporationManaging relationships between resources stored within a repositoryUS836473213 Ene 201129 Ene 2013Microsoft CorporationExtending cluster allocations in an extensible file systemGirarImagen originalP�gina principal de Google - Sitemap - Descargas masivas de USPTO - Pol�tica de privacidad - Condiciones de servicio - Acerca de Google Patentes - Danos tu opini�nDatos proporcionados por IFI CLAIMS Patent Services©2012 Google