Embodiments of the present invention relate generally to the field of data processing and, in particular, to read down from a higher security level domain to a lower security level domain in a multi domain, multi security levels computing environment.
In certain data processing applications, it may be desirable to have applications from one domain to be able to access data in another domain, but not vice versa. An example of such applications is a multi domain, multi security level computing environment, where it may be desirable for applications in a higher security level domain to access data in a lower security level domain, but not vice versa.
Currently, there are no known file systems that allow a storage device to be simultaneously mounted for read-only access by one file system, and for read-write access by another file system.
The present invention will be described by way of exemplary embodiments, but not limitations, illustrated in the accompanying drawings in which like references denote similar elements, and in which:
Illustrative embodiments of the present invention include but are not limited to a file system adapted to manage read and/or write of data blocks of files stored in storage devices of a domain, in a manner enabling the file system to perform write operations wait free, while another file system of another domain may coherently read the data blocks, without substantive communications between the two file systems for enabling this capability.
Various aspects of the illustrative embodiments will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. However, it will be apparent to those skilled in the art that alternate embodiments may be practiced with only some of the described aspects. For purposes of explanation, specific numbers, materials, and configurations are set forth in order to provide a thorough understanding of the illustrative embodiments. However, it will be apparent to one skilled in the art that alternate embodiments may be practiced without the specific details. In other instances, well-known features are omitted or simplified in order not to obscure the illustrative embodiments.
Further, various operations will be described as multiple discrete operations, in turn, in a manner that is most helpful in understanding the illustrative embodiments; however, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations need not be performed in the order of presentation.
The phrase “in one embodiment” is used repeatedly. The phrase generally does not refer to the same embodiment; however, it may. The terms “comprising”, “having”, and “including” are synonymous, unless the context dictates otherwise.
Referring now to
For the embodiments, for ease of understanding, each of systems 102 and 104 is illustrated as having similar components, network interface card (NIC) 112 or 122, Data Server 114 or 124, and File System 116 or 126. However, in alternate embodiments, the systems may have different components.
As will be described in more detail below, at least one of file systems 116 and 126, e.g. file system 126 of the domain with the lower security level, is adapted to manage writing and reading 134 of data blocks of files stored in storage devices 106/108, in a manner that allows file system 126 to perform write operations wait free, while file system of another domain, e.g. file system 116 of the domain with the higher security level may be able to coherently access the data blocks of files stored in storage device 108, without substantive communications between the two file systems, for the purpose of enabling this capability.
In particular, in various embodiments, file system 126 uses an hierarchical data structure having a number of data block pointers identifying the data blocks of the files, and complemented with the operation flow of write operations that make the wait free write by file system 126 and the coherent reads of the data blocks of storage device 118 by file system 116 possible.
In various embodiments, file system 116 of the other domain, e.g. of higher security level, may be similarly constituted as file system 126 of the lower security level domain, for managing reading and writing 132 of data blocks of files in storage device 106. In alternate embodiments, it may not.
While for illustrative purpose, computing environment 100 is illustrated with security block 110, in alternate embodiments, the present invention may be practiced without security block 110. While for ease of understanding, only two domains with two pairs of system and storage device are illustrated, in alternate embodiments, the invention may be practiced with more systems and domains with or without corresponding storage devices.
Referring now also to
Additionally, for the embodiments, an Index Node 302 may further include various meta data about the Index Nodes and/or data blocks identified by the Index Node. Examples of these meta data include but are not limited to
Number of Bytes 312 denoting the size in bytes of the Index Node,
Index Node Number 314 denoting a numeric identifier of the Index Node,
Create Time 316 denoting the time the Index Node was first created,
Modified Time 318 denoting the time the Index Node was last modified,
Mode 320 denoting an INode type, e.g. whether it is a plain file, a directory, etc., and
Level 322 denoting the level of indirection of the Index Node from the predecessor Node.
In various embodiments, an Index Node 302 may have more or less meta data.
In various embodiments, to further improve the efficiency of operation, file system 116 may cache one or more Index Nodes.
a-4c illustrate the complementary write operations practiced by file system 126 to enable wait free write by file system 126, while allowing file system 116 to coherently read the data blocks of files in storage device 108 without substantive communication between file systems 126 and 116 to provide the capability.
As illustrated in
Referring now to
Thereafter, file system 126 waits for further write data request or a write close request, 416. On receipt of another write data request, file system 126 continues operation, starting at operation 412 as earlier described. On receipt of a write close request, file system 126 continues operation as illustrated in
Referring now to
As will be appreciated by those skill in the art, the employment of the hierarchical data structure with linked Index Nodes, coupled with the complementary write operations advantageously enable a file system of one domain (e.g. file system 126) to write wait free, while a file system from another domain, such as file system 116 (from e.g. a high security level domain) to coherently read data from the domain of file system 126 without having to have any substantive communication between file systems 126 and 116 to provide the capability.
In various embodiments, to facilitate tracking of free data blocks, file system 126 maintains a FIFO queue of pointers to the free data blocks. The FIFO queue has the advantage of delaying reuse of the free data blocks for as long as possible. The FIFO queue is also referred to as a Block Map. In various embodiments, the Block Map is maintained as an Index Node directly linked to the Root Index Node (that is identify by one of the pointers of the Root Index Node).
In various embodiments, similarly, to facilitate tracking of free and used Index Nodes, file system 126 maintains an Index Node Map. In various embodiments, the Index Node Map is maintained as an Index Node directly linked to the Root Index Node (that is identify by one of the pointers of the Root Index Node).
In various embodiments, similarly, to facilitate referencing of the Index Nodes by names, file system 126 maintains Index Node Directory, mapping Index Node names to their numeric identifiers. In various embodiments, the Index Node Directory is maintained as an Index Node directly linked to the Root Index Node (that is identify by one of the pointers of the Root Index Node).
In various embodiments, file system 126 maintains an order of the various write operations. In various embodiments, the order is data blocks, followed by indirect blocks, Index Nodes, and directories.
In various embodiments, security block 110 is employed to inform file systems 116 and 126 of block reuse. This further enhances the likelihood of the correctness of the wait free coherent reads by file system 116, in particular, in situations where storage devices 108 becomes very full, and data blocks are freed and allocated rapidly. Under these situations, it may be possible for file system 116 to read a data block from storage device 108 that does not correspond to the data blocks identified by an Index Node cached by file system 116.
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described, without departing from the scope of the present invention. This application is intended to cover any adaptations or variations of the embodiments discussed herein. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.