Support for no shared filesystem (unsupport for shared filesystem?) and
(eventual) support for NFS servers without race conditions! This means no NFS between nodes and ops/fs. There are still NFS mounts of ops on boss however. Added new defs-* variable NOSHAREDFS, which when set non-zero will disable the export of NFS filesystems to nodes. Involved lots of little changes: * /users, /proj, and /share filesystems are not exported to nodes. * Returned mount info now includes an FSTYPE key which will be set to "LOCAL" if NOSHAREDFS is in effect (by default it is set to "NFS-RACY"; more on this later). In the case where it is set to LOCAL, the other mount lines no longer contain REMOTE=foo settings. Because of this change, THE TMCD VERSION NUMBER HAS BEEN BUMPED TO 32. * The client rc.mounts script will now create local versions of /users/*, /proj/<pid>, and /share when FSTYPE=LOCAL. It first runs mkextrafs to create a large partition for these, since someday we will likely want to pre-populate these with a non-trivial amount of data. Right now, the only thing that is put in the user's homedir is the standard dotfiles for the OS and the Emulab authorized_keys file (so you can login). * Linktest had to be modified to fetch the various results files (via loghole) rather than just assuming they were in /proj. And also changed to invoke tevc with the local copy of the event key so it won't try to read it over NFS. * create_image was modified to ssh to the node and run the imagezip command, capturing the output of ssh. This is controlled via the "-s" option which defaults to on for a NOSHAREDFS system, but can also be used on a normal system. * elabinelab's can be configured with/without a shared FS via the CONFIG_SHAREDFS attribute (note polarity change) which defaults to 1. Another new defs-* variable, NFSRACY, will some day allow you to specify (by setting to 0) that your NFS server does NOT have the nefarious mountd race condition when changing /etc/exports. Currently, this defaults to 1 since all versions of FreeBSD supported as an "fs" node have this "feature." Rumor has it that FreeBSD 8 does not have this problem nor, presumably, would a Linux NFS server. The only use of this variable right now is to set the FSTYPE returned by the tmcd "mounts" call, which in turn is used by one client script, rc.topomap (via a libsetup function) to determine whether it should try copying the topo file multiple times. Random: add python2.6 to list of python's checked for in configure. Random: resync defs-example-privatecnet with defs-example. Random: did a little code-pissin here and there.
Showing with 701 additions and 145 deletions