|
@@ -17,7 +17,7 @@ concepts of blocks, inodes and directories.
|
|
|
On QNX it is possible to create little endian and big endian qnx6 filesystems.
|
|
|
This feature makes it possible to create and use a different endianness fs
|
|
|
for the target (QNX is used on quite a range of embedded systems) plattform
|
|
|
-running on a different endianess.
|
|
|
+running on a different endianness.
|
|
|
The Linux driver handles endianness transparently. (LE and BE)
|
|
|
|
|
|
Blocks
|
|
@@ -26,7 +26,7 @@ Blocks
|
|
|
The space in the device or file is split up into blocks. These are a fixed
|
|
|
size of 512, 1024, 2048 or 4096, which is decided when the filesystem is
|
|
|
created.
|
|
|
-Blockpointers are 32bit, so the maximum space that can be adressed is
|
|
|
+Blockpointers are 32bit, so the maximum space that can be addressed is
|
|
|
2^32 * 4096 bytes or 16TB
|
|
|
|
|
|
The superblocks
|
|
@@ -47,16 +47,16 @@ inactive superblock.
|
|
|
Each superblock holds a set of root inodes for the different filesystem
|
|
|
parts. (Inode, Bitmap and Longfilenames)
|
|
|
Each of these root nodes holds information like total size of the stored
|
|
|
-data and the adressing levels in that specific tree.
|
|
|
-If the level value is 0, up to 16 direct blocks can be adressed by each
|
|
|
+data and the addressing levels in that specific tree.
|
|
|
+If the level value is 0, up to 16 direct blocks can be addressed by each
|
|
|
node.
|
|
|
-Level 1 adds an additional indirect adressing level where each indirect
|
|
|
-adressing block holds up to blocksize / 4 bytes pointers to data blocks.
|
|
|
-Level 2 adds an additional indirect adressig block level (so, already up
|
|
|
-to 16 * 256 * 256 = 1048576 blocks that can be adressed by such a tree)a
|
|
|
+Level 1 adds an additional indirect addressing level where each indirect
|
|
|
+addressing block holds up to blocksize / 4 bytes pointers to data blocks.
|
|
|
+Level 2 adds an additional indirect addressing block level (so, already up
|
|
|
+to 16 * 256 * 256 = 1048576 blocks that can be addressed by such a tree).
|
|
|
|
|
|
Unused block pointers are always set to ~0 - regardless of root node,
|
|
|
-indirect adressing blocks or inodes.
|
|
|
+indirect addressing blocks or inodes.
|
|
|
Data leaves are always on the lowest level. So no data is stored on upper
|
|
|
tree levels.
|
|
|
|
|
@@ -64,7 +64,7 @@ The first Superblock is located at 0x2000. (0x2000 is the bootblock size)
|
|
|
The Audi MMI 3G first superblock directly starts at byte 0.
|
|
|
Second superblock position can either be calculated from the superblock
|
|
|
information (total number of filesystem blocks) or by taking the highest
|
|
|
-device address, zeroing the last 3 bytes and then substracting 0x1000 from
|
|
|
+device address, zeroing the last 3 bytes and then subtracting 0x1000 from
|
|
|
that address.
|
|
|
|
|
|
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.
|
|
|
Object mode field is POSIX format. (which makes things easier)
|
|
|
|
|
|
There are also pointers to the first 16 blocks, if the object data can be
|
|
|
-adressed with 16 direct blocks.
|
|
|
-For more than 16 blocks an indirect adressing in form of another tree is
|
|
|
+addressed with 16 direct blocks.
|
|
|
+For more than 16 blocks an indirect addressing in form of another tree is
|
|
|
used. (scheme is the same as the one used for the superblock root nodes)
|
|
|
|
|
|
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
|
|
|
inode.
|
|
|
|
|
|
Character and block special devices do not exist in QNX as those files
|
|
|
-are handled by the QNX kernel/drivers and created in /dev independant of the
|
|
|
+are handled by the QNX kernel/drivers and created in /dev independent of the
|
|
|
underlaying filesystem.
|
|
|
|
|
|
Long filenames
|
|
|
--------------
|
|
|
|
|
|
-Long filenames are stored in a seperate adressing tree. The staring point
|
|
|
+Long filenames are stored in a separate addressing tree. The staring point
|
|
|
is the longfilename root node in the active superblock.
|
|
|
Each data block (tree leaves) holds one long filename. That filename is
|
|
|
limited to 510 bytes. The first two starting bytes are used as length field
|