The QNX filesystem driver for Linux: QNX4, QNX6 & floppy read/write support.

03 may 2009, Dmitry Yakovlev.

The driver replaces linux in-tree qnx4 fs driver which does not support writing. The author of the driver - Serguei Tzukanov http://tzukanov.narod.ru. Please, send diffs and remarks to Dmitry Yakovlev (qnxfs(at)narod(dot)ru).

It is BETA, use it at your own risk.

qnx4fs-03-may-2009.tgz (2.6.8 - 2.6.29 kernels off-tree build)
qnxfs-03-may-2009.tgz (2.6.28 - 2.6.29 kernel off-tree build)

qnx4fs-01jul2005-patch.bz2 (linux-2.6.12.1 kernel)
qnx4fs-15apr2004-patch.bz2 (linux-2.6.0 - 2.6.5 kernel)

qnx4fs-9nov2002.patch.bz2 (linux-2.4.18-5 kernel)
qnx4fs.tgz to make it as a module (linux-2.4.15 kernel at least)

Known bugs

  • Directories and /.inodes are never shrunk (QNX RTP's fs driver has the same limitation)
  • du slightly lies about partition size (7 blocks max) - fixed for 2.6 kernel driver
  • mknod() is not implemented
  • fsync and the such is not implemented

Testing

I ran fsx-linux, fs_inod, openfile, growfiles, rwtest tests (see Linux Test Project http://ltp.sf.net).

There is qnx4 filesystem image qnxfs1g.img.bz2 (1.7K expands to ~1G). You can mount it as root:

# mount -t qnx4fs ./qnxfs1g.img /mnt/qnx -o loop=/dev/loop1,blocksize=512

Chkfs utility

Chkfs (chkfs-0.3b.src.tgz ~64K) is a simple chkfsys-like utility for QNX4 filesystem, which can show internal fs structures - extent blocks, directory entries etc. It also can read data from destroyed filesystem. Chkfs works on Linux & QNX 4/6 platforms. A hexadecimal filesystem editor added, use it at you own risk.

Changelog

January 19, 2009 Y.D.
Races fixes
September xx, 2008 Eric Sesterhenn
various changes:
2.6.26 kernel support
sanity checks
checkpatch and sparse cleanups
remove big kernel lock
August 05, 2008 Y.D.
2.6.24 kernel support.
June 19, 2008 Y.D.
2.6.22 kernel support.
July 01, 2005 Y.D.
2.6.12 kernel support.
April 15, 2004 Y.D.
Minor fixes (2.6.0 kernel driver).
March 01, 2004 Y.D.
Removed unnecessary BKLs (2.6.0 kernel driver)
January 14, 2004 Y.D.
2.6.0 kernel support.
November 9, 2002 Y.D.
Some qnx4fs_truncate() fixes.
October 12, 2002 Y.D.
Chkfsys friendly.
November 11, 2001
Now patch replaces old qnx4 fs driver; don't show .inodes and .bitmap to users; cleanups.
November 5, 2001 (the project is alive, need testers)
Revert dir layout code to bufcache. Various cleanups/tweaks.
August 19, 2001
Fixed qnx4fs_balloc(); deleting/linking/renaming of files is faster.
August 17, 2001
Solved lockup with 2.4.8+ kernels (the current kernel qnx4 fs lockups too, just delete line 399 in linux/fs/qnx4/inode.c); minor tweaks/cleanups.
August 16, 2001
Dir layout code is rewritten to use pagecache; fixed rename; major simplification in qnx4fs_balloc ().
August 09, 2001
Fixed leak in qnx4fs_is_empty_dir().
August 07, 2001
Fixed truncate(); minor cleanup.
August 05, 2001
First public version.

The QNX4 filesystem doc

The QNX4 filesystem docs (Russian)
The QNX4 filesystem docs at QSSL

Links


Dinit utility http://www.alarsen.net/linux/qnx4fs/dinit.tgz
Hosted by uCoz