Skip to content
  • Mike Hibler's avatar
    Support for no shared filesystem (unsupport for shared filesystem?) and · c1c1bce2
    Mike Hibler authored
    (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.
    c1c1bce2