This is version 1.0.0 of my implementation of the OpenVMS ODS-5 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', 'ODS-2' or 'ODS-5'. 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 1.0.0 was to fix a few bugs and to support UTF-8 filenames (and the usual adjustments to current kernels).

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 the filesystem with a Tiny Core Linux iso image. Just burn and boot the remastered ISO image of Tinycore 9.0, with the ods5 kernel module. For more info on this distribution, see Tiny Core Linux.

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 ODS-5 filenames are sorted in the directories. You want to use "ls -U" to keep the ODS-5 sorting. The ODS-5 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 an email to: ods5 dot info at vms2linux dot de.