Changes between Version 10 and Version 11 of TBR/UserManual/RTEMS_File_System


Ignore:
Timestamp:
Dec 1, 2013, 12:25:00 AM (6 years ago)
Author:
Wendell
Comment:

/* Inodes */

Legend:

Unmodified
Added
Removed
Modified
  • TBR/UserManual/RTEMS_File_System

    v10 v11  
    4343
    4444
    45 An inode can be a device node (block or character), directory, FIFO, regular file, link, or socket. Current RTEMS does not support FIFO or socket nodes in its file systems so they are ignored. Inodes are numbered from 1 so there is no inode number 0. The root inode is always 1 and therefore the first inode of the first group and its mode is directory. This directory can contain any number of inodes including directories. Files can be link using hard or symbolic links. Directories cannot be linked therefore avoiding the creation of a directed acyclic graph or DAG. An inode can have a map of blocks associated to it. The use of the data depends on the mode of the inode. If the inode is a directory the data in the block map is the contents of the directory. If a regular file the block map contains the file's data and if a symbolic link the data is the link path. The block map has three levels. The first is a series of block numbers held in the inode. The current value is 5 blocks. When the block map is less than or equal to 5 blocks the mapping is called direct as the block numbers map directly to data blocks. If there are more than 5 blocks the 5 inode slots point to blocks that hold the data blocks. This called singly indirect. The number of blocks that can be addressed with a single indirect map depends on the block size. For a block size of 1024 bytes and a 32bit block number a block holds 256 blocks, and with 5 indirect blockes addressable from the inode this is a total of 1280 blocks or 1.3M bytes. If the map grows to have more blocks the map changes to a doubly indirect map. Here the block addressed from the inode holds block numbers to singly indirect blocks. With our example block size of 1024 bytes this takes the maximum file size up to 327,680 blocks or 335M bytes. A block size of 4096 allows a single file to be 21.4G bytes.
     45An inode can be a device node (block or character), directory, FIFO, regular file, link, or socket. Current RTEMS does not support FIFO or socket nodes in its file systems so they are ignored. Inodes are numbered from 1 so there is no inode number 0. The root inode is always 1 and therefore the first inode of the first group and its mode is directory. This directory can contain any number of inodes including directories. Files can be link using hard or symbolic links. Directories cannot be linked therefore avoiding the creation of a directed cyclic graph or DCG. An inode can have a map of blocks associated to it. The use of the data depends on the mode of the inode. If the inode is a directory the data in the block map is the contents of the directory. If a regular file the block map contains the file's data and if a symbolic link the data is the link path. The block map has three levels. The first is a series of block numbers held in the inode. The current value is 5 blocks. When the block map is less than or equal to 5 blocks the mapping is called direct as the block numbers map directly to data blocks. If there are more than 5 blocks the 5 inode slots point to blocks that hold the data blocks. This called singly indirect. The number of blocks that can be addressed with a single indirect map depends on the block size. For a block size of 1024 bytes and a 32bit block number a block holds 256 blocks, and with 5 indirect blockes addressable from the inode this is a total of 1280 blocks or 1.3M bytes. If the map grows to have more blocks the map changes to a doubly indirect map. Here the block addressed from the inode holds block numbers to singly indirect blocks. With our example block size of 1024 bytes this takes the maximum file size up to 327,680 blocks or 335M bytes. A block size of 4096 allows a single file to be 21.4G bytes.
    4646
    4747Inodes hold the number of links to itself. If 0 the inode is not linked and therefore should be marked as free in the group's inode allocator bitmap. An inode can have a number of links or hard links it is not of type directory. Inodes also hold the owner details and the permission bits. These control access to the inode via the operating calls. Finally inodes hold the access, modified and changed times. The access time if the last time the file was read, the modified time the last time file was written to and the changed time the last time the inode was written to.