Power-Safe (fs-qnx6.so) filesystem

Updated: April 19, 2023

The limits for Power-Safe filesystems (supported by fs-qnx6.so) include:

Physical disk sectors
32-bit (2 TB), using the devb API.
Logical filesystem block size
512, 1024, 2048, 4096, 8192, 16384, 32768, or 65536 bytes. This is set when you initially format the filesystem; the default block size is 4096 bytes.
Filename length
510 bytes (UTF-8). If the filename is less than 28 bytes long, it's stored in the directory entry; if it's longer, it's stored in an external file, and the directory entry points to the name.
Pathname length
PATH_MAX (1024) bytes, not including the mountpoint or the terminating NUL.
Maximum file size

The maximum file size depends on the block size but also the maximum filesystem size.

Although 64-bit addressing is used, the block pointers are always 32 bits. The inode for a file has 16 pointers at the root of the block lookup tree. So, with a 1 KB block size, you can fit 256 block pointers in a block and so, a file that's up to 16 × 256 × 1 KB (4 MB) requires one level of indirect pointers. If the file is bigger, you need two levels (i.e., 16 blocks of 256 pointers to blocks holding another 256 pointers to blocks), which gives a maximum file size of 1 GB. For three levels of indirect pointers, the maximum file size is 256 GB.

If the block size is 2 KB, then each block holds up to 512 pointers, and everything scales accordingly. However, for block sizes of 4 KB and higher, the maximum file size is limited by the maximum filesystem size. So the file size limits in the bottom four rows of the table shown just below match those in the corresponding rows of the table shown for the maximum filesystem size (see this other property's description further below):
Block size Maximum file size
0.5 KB 16 GB
1 KB 256 GB
2 KB 4 TB
4 KB 16 TB
8 KB 32 TB
16 KB 64 TB
32 KB 128 TB
CAUTION:
Due to the need for a couple of special block pointers, the actual file size limits are a bit lower than the theoretical limits shown here.
Maximum number of files

The same as the maximum number of inodes minus two (one is reserved for "/", the other for "/.boot").

This number can be set by either mkqnx6fs (with the -i option), or mkqnx6fsimg (with the num_inodes attribute in the buildfile). Both utilities assign default values if the number isn't specified.

You can query this value at any time with df -g mountpoint, where the variable is set to the Power-Safe filesystem mountpoint. The chkqnx6fs -S option also shows this value.

Maximum filesystem size
A filesystem (or partition or volume) can have at most 2^32 blocks, so the block size determines the maximum filesystem size:
Block size Maximum filesystem size
0.5 KB 2 TB
1 KB 4 TB
2 KB 8 TB
4 KB 16 TB
8 KB 32 TB
16 KB 64 TB
32 KB 128 TB
Note: The filesystem size limit also affects the file size limit (see above).