The source distribution of the Logical Disk system is organized as follows:
Both the code for the Logical Disk and the Minix file system are linked into one executable to produce the MinixLLD system. The MinixLLD system can be run in two ways, first, by itself and, second, using an interactive shell. To run the MinixLLD system by itself the EXPLICIT_WORK flag needs to be defined during compilation (the Makefiles in the fs and the LLD source directories need to be changed). The function do_experiment() defines the operations that are to be executed when running MinixLLD by itself. It is defined in the file fs/performance.c, which also contains several examples of how to write do_experiment() (and illustrates the use of the compiler flags of the form [ name]_EXPERIMENT).
To run the MinixLLD with the interactive shell we use the two helper programs startup and rfs. startup takes two programs as arguments, creates two pipes (one for each direction of communication between the two programs), forks itself and then runs the two programs. rfs provides the interactive shell, reading commands from the console, sending them to MinixLLD and then printing the returned results. The source code for both helper programs can be found in the unix directory. MinixLLD must be compiled without the EXPLICIT_WORK flag to be used with the interactive shell. The commands of the interactive shell are defined in a table in the file unix/rfs.c.
MinixLLD uses a raw UNIX partition for creating and accessing its file system. The name of this partition is defined in L_DISK_NAME in the file disk.h in both the L_DISK and the LLD_with_ARUs directories. It is also defined in L_DISK_NAME in the files readblock.c and readdisk.c in the unix directory, which define helper programs to read data from the MinixLLD file system within UNIX. The partition is prepared for use by MinixLLD by running the mk_lld command in the command directory. Note that mk_lld will erase all previous data in the MinixLLD partition.
The on-disk data structures for the new version of LLD needed to be changed (expanded) from the old version of LLD (to accommodate concurrent atomic recovery units). However, to use both versions of LLD on the same file system (modulo concurrent atomic recovery units) and, more importantly, to use the same mk_lld command for both versions, the flag VERSION_MERGER must be defined during compilation.
Last changed on 28 November 1995 by Robert Grimm