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.