This is version 0.9.9 of my implementation of the OpenVMS ODS5 file system
for Linux. It can read OpenVMS On Disk Structures (ODS) version 2 and 5.
Here the Linux file system is named 'ods5', references to the OpenVMS file systems
are 'ODS', 'ODS2' or 'ODS5'. The ODS file system is also known as 'Files 11'.
The Linux ods5 file system is read-only and there's no plan to change that.
The major work for version 0.9.9 was to fix bugs and to cleanup the source code.
The Linux implementation of the file system is based on the description in Kirby McCoy (1990), VMS File System Internals, Digital Press, ISBN 1-55558-056-4 and on publicly available header files.
VMS files can be structured in records, VMS supplies the Record Management Services (RMS) to allow record oriented I/O. The Linux ods5 file system supplies a tool to display RMS file attributes, rats, and a tool to copy RMS records, copr.
You can try out this filesystem with a Tiny Core Linux iso image. Just burn and boot the remastered ISO image of Tinycore 3.2, with the ods5 kernel module. For more info on this distribution, see Tiny Core Linux.
Current limitation: Unicode characters (UCS-2) in file names are escaped. This is similar to what the VMS DCL shows. The DCL escape sequence is "^U". It is followed by uppercase hexadecimal characters. A filename containing only the Greek small alpha character will show on VMS as "^U03B1.;1" This Linux ods5 filesystem uses '?' as an escape character. Please note, a '?' can not be part of an ODS filename. So the above filename will show as "?03B1.;1". This limitation may be lifted, sometime.
Current limitation: Exporting an ods5 files system with nfs is not supported. This limitation may be lifted, sometime.
Limitation: Using an disk image file from an ods5 volume for a Linux loop device is supported, but may not work for older kernels. The error 'ioctl: LOOP_SET_FD: Invalid argument' indicates that there is no support in ods5 required by the loop driver in such kernels.
Limitation: In general, ods5 can be used with stackable unification file systems such as aufs, unionfs-fuse and unionfs. However, aufs does not forward ioctl or getxattr calls, which are used by the ods5 tools rats and copr. That is, here you can not retrieve the RMS file attributes, which are required to do a record based copy of the file content. The unionfs-fuse supports forwarding of getxattr but only if it was compiled with HAVE_SETXATTR. The unionfs seems to forward both calls, but I have no current version of it to do some testing.
Limitation: ODS Volume sets are not supported.
Known incompatibility: On VMS, following a symbolic link depends on the process context. The context can be case blind or case sensitive. In a case blind context a link to "hello" can be followed to the file "HELLO.;1". A Linux process is always case sensitive and will not follow such a link.
Please note that ODS5 filenames are sorted in the directories. You want to use "ls -U" to keep the ODS5 sorting. The ODS5 sort is caseblind in uppercase. Therefore 'x' comes before 'Y' and 'z' before '_'.
How the Linux ods5 looks like, an overview.
What you can do with it.
List of ods5 specific mount options
Comparing the OpenVMS ODS and the Linux ods5 file systems.
Design and Implementation notes.
Any question, suggestion, bug report? Send mail to ods5 at vms2linux.de.