3d Authors


3d

3d is the historical name for nDFS, the multiple dimension file system. It is implemented as a shared library that is preloaded before any other shared library using the recently documented (ahem) LD_PRELOAD or _RLD_LIST feature of the runtime linker. 3d intercepts pathname system calls (and other calls if tracing is turned on) and provides a logical namespace on top of the underlying physical file system. The shared library implementation currently works only on linux.i386, osf.alpha, sun4, sol.sun4, and sgi.mips2.

3d works in conjunction with ksh88 or ksh93. The 3d command with no arguments enters a 3d shell. The vpath builtin controls the logical filesystem view:

     vpath dir_1 dir_2
mounts the directory hierarchy dir_1 on top of dir_2. Files under dir_1 overlay files under dir_2. Files under dir_2 are readonly; any files under dir_2 that are modified are first copied to the corresponding place in dir_1. vpaths may be chained:
     vpath dir_2 dir_3
vpaths are per-process; every process may have a different view. vpaths are a handy way to separate source and generated files. Typical ast users set up 3d at login or xterm time:
     export HOSTTYPE=$(package)
     vpath $HOME/arch/$HOSTTYPE $HOME
with source files in $HOME/src/(cmd|lib)/*. nmake is run in $HOME/arch/$HOSTTYPE/src/(cmd|lib)/* and generated files (objects and executables) are dropped in the top hierarchy.

2d can prefix any command to disable 3d for that command:

     2d ls *.c

3d also provides tracing, monitoring and call intercept services. vpm uses monitoring to graph the process and io hierarchy. The cs name server uses pathname call intercepts to translate network pathnames. Try this for any host:

     cat /dev/tcp/hostname/inet.daytime


Authors

Glenn Fowler, David Korn, and Eduardo Krell.


Glenn Fowler
Information and Software Systems Research
AT&T Labs Research
Florham Park NJ
December 07, 1999