diff options
Diffstat (limited to 'Documentation/filesystems/qnx6.txt')
-rw-r--r-- | Documentation/filesystems/qnx6.txt | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/Documentation/filesystems/qnx6.txt b/Documentation/filesystems/qnx6.txt index 050223ea03c7..e59f2f09f56e 100644 --- a/Documentation/filesystems/qnx6.txt +++ b/Documentation/filesystems/qnx6.txt | |||
@@ -17,7 +17,7 @@ concepts of blocks, inodes and directories. | |||
17 | On QNX it is possible to create little endian and big endian qnx6 filesystems. | 17 | On QNX it is possible to create little endian and big endian qnx6 filesystems. |
18 | This feature makes it possible to create and use a different endianness fs | 18 | This feature makes it possible to create and use a different endianness fs |
19 | for the target (QNX is used on quite a range of embedded systems) plattform | 19 | for the target (QNX is used on quite a range of embedded systems) plattform |
20 | running on a different endianess. | 20 | running on a different endianness. |
21 | The Linux driver handles endianness transparently. (LE and BE) | 21 | The Linux driver handles endianness transparently. (LE and BE) |
22 | 22 | ||
23 | Blocks | 23 | Blocks |
@@ -26,7 +26,7 @@ Blocks | |||
26 | The space in the device or file is split up into blocks. These are a fixed | 26 | The space in the device or file is split up into blocks. These are a fixed |
27 | size of 512, 1024, 2048 or 4096, which is decided when the filesystem is | 27 | size of 512, 1024, 2048 or 4096, which is decided when the filesystem is |
28 | created. | 28 | created. |
29 | Blockpointers are 32bit, so the maximum space that can be adressed is | 29 | Blockpointers are 32bit, so the maximum space that can be addressed is |
30 | 2^32 * 4096 bytes or 16TB | 30 | 2^32 * 4096 bytes or 16TB |
31 | 31 | ||
32 | The superblocks | 32 | The superblocks |
@@ -47,16 +47,16 @@ inactive superblock. | |||
47 | Each superblock holds a set of root inodes for the different filesystem | 47 | Each superblock holds a set of root inodes for the different filesystem |
48 | parts. (Inode, Bitmap and Longfilenames) | 48 | parts. (Inode, Bitmap and Longfilenames) |
49 | Each of these root nodes holds information like total size of the stored | 49 | Each of these root nodes holds information like total size of the stored |
50 | data and the adressing levels in that specific tree. | 50 | data and the addressing levels in that specific tree. |
51 | If the level value is 0, up to 16 direct blocks can be adressed by each | 51 | If the level value is 0, up to 16 direct blocks can be addressed by each |
52 | node. | 52 | node. |
53 | Level 1 adds an additional indirect adressing level where each indirect | 53 | Level 1 adds an additional indirect addressing level where each indirect |
54 | adressing block holds up to blocksize / 4 bytes pointers to data blocks. | 54 | addressing block holds up to blocksize / 4 bytes pointers to data blocks. |
55 | Level 2 adds an additional indirect adressig block level (so, already up | 55 | Level 2 adds an additional indirect addressing block level (so, already up |
56 | to 16 * 256 * 256 = 1048576 blocks that can be adressed by such a tree)a | 56 | to 16 * 256 * 256 = 1048576 blocks that can be addressed by such a tree). |
57 | 57 | ||
58 | Unused block pointers are always set to ~0 - regardless of root node, | 58 | Unused block pointers are always set to ~0 - regardless of root node, |
59 | indirect adressing blocks or inodes. | 59 | indirect addressing blocks or inodes. |
60 | Data leaves are always on the lowest level. So no data is stored on upper | 60 | Data leaves are always on the lowest level. So no data is stored on upper |
61 | tree levels. | 61 | tree levels. |
62 | 62 | ||
@@ -64,7 +64,7 @@ The first Superblock is located at 0x2000. (0x2000 is the bootblock size) | |||
64 | The Audi MMI 3G first superblock directly starts at byte 0. | 64 | The Audi MMI 3G first superblock directly starts at byte 0. |
65 | Second superblock position can either be calculated from the superblock | 65 | Second superblock position can either be calculated from the superblock |
66 | information (total number of filesystem blocks) or by taking the highest | 66 | information (total number of filesystem blocks) or by taking the highest |
67 | device address, zeroing the last 3 bytes and then substracting 0x1000 from | 67 | device address, zeroing the last 3 bytes and then subtracting 0x1000 from |
68 | that address. | 68 | that address. |
69 | 69 | ||
70 | 0x1000 is the size reserved for each superblock - regardless of the | 70 | 0x1000 is the size reserved for each superblock - regardless of the |
@@ -83,8 +83,8 @@ size, number of blocks used, access time, change time and modification time. | |||
83 | Object mode field is POSIX format. (which makes things easier) | 83 | Object mode field is POSIX format. (which makes things easier) |
84 | 84 | ||
85 | There are also pointers to the first 16 blocks, if the object data can be | 85 | There are also pointers to the first 16 blocks, if the object data can be |
86 | adressed with 16 direct blocks. | 86 | addressed with 16 direct blocks. |
87 | For more than 16 blocks an indirect adressing in form of another tree is | 87 | For more than 16 blocks an indirect addressing in form of another tree is |
88 | used. (scheme is the same as the one used for the superblock root nodes) | 88 | used. (scheme is the same as the one used for the superblock root nodes) |
89 | 89 | ||
90 | The filesize is stored 64bit. Inode counting starts with 1. (whilst long | 90 | The filesize is stored 64bit. Inode counting starts with 1. (whilst long |
@@ -118,13 +118,13 @@ no block pointers and the directory file record pointing to the target file | |||
118 | inode. | 118 | inode. |
119 | 119 | ||
120 | Character and block special devices do not exist in QNX as those files | 120 | Character and block special devices do not exist in QNX as those files |
121 | are handled by the QNX kernel/drivers and created in /dev independant of the | 121 | are handled by the QNX kernel/drivers and created in /dev independent of the |
122 | underlaying filesystem. | 122 | underlaying filesystem. |
123 | 123 | ||
124 | Long filenames | 124 | Long filenames |
125 | -------------- | 125 | -------------- |
126 | 126 | ||
127 | Long filenames are stored in a seperate adressing tree. The staring point | 127 | Long filenames are stored in a separate addressing tree. The staring point |
128 | is the longfilename root node in the active superblock. | 128 | is the longfilename root node in the active superblock. |
129 | Each data block (tree leaves) holds one long filename. That filename is | 129 | Each data block (tree leaves) holds one long filename. That filename is |
130 | limited to 510 bytes. The first two starting bytes are used as length field | 130 | limited to 510 bytes. The first two starting bytes are used as length field |