1. 14 Feb, 2017 1 commit
  2. 19 Dec, 2016 1 commit
    • Mike Hibler's avatar
      Another speed up for the 'pw' command. · 4e90c06e
      Mike Hibler authored
      A recent commit to 10-STABLE caught my attention since it was a speed
      up of the 'pw' command. Probably not a huge issue in our environment,
      but I incorporated it into our patch.
      4e90c06e
  3. 22 Nov, 2016 1 commit
    • Mike Hibler's avatar
      Optimize the case of a "usermod -G" which changes only a few groups. · 9ab75810
      Mike Hibler authored
      The handling of group file changes via the -G option is abysmal.
      It creates a new copy of the installed group file on every group line
      changed, fsync'ing after the new copy is made. On top of that, it implements
      a new group list by first removing the user from all existing groups and then
      reading them to every group in the new list, thereby maximizing the number of
      group lines changed!
      
      On the Emulab mothership where, for example, the "geniuser" user is in
      some 450+ groups, adding them to a new group entailed changing 450+ lines
      twice, resulting in over 900 copies of the 2000 line group file being
      written. This took about 17 minutes.
      
      The change here is modest, just check where the group line needs to be
      changed or not before doing anything. In the case above, adding a single
      group for a user, we only write the group file once. This takes about 0.8
      seconds.
      9ab75810
  4. 20 Nov, 2015 1 commit
  5. 08 Jun, 2015 1 commit
    • Mike Hibler's avatar
      The latest installment of Mike's Fine Mountd Hackary (MFMH). · 89fe803f
      Mike Hibler authored
      Previously on MFMH:
      
       * Our hero added incremental kernel export updates to mountd so
         that a single update would finish within his lifetime,
      
       * Hero subsequently discovers that an incremental update still
         takes 8 seconds on the Emulab Mothership,
      
       * Hero discovers that remaining time is spent NOT in kernel operations
         or even complex calculations of orbital mechanics, but rather in simple
         parsing of text from a 1300 line file.
      
       * Hero gives up in despair.
      
      This week on MFMH:
      
       * Our revitalized hero applies gprof-fu to the problem and
         discovers that 7.9 seconds of the 8 second /etc/exports parse time
         is spent stat()ing /etc/nsswitch.conf 2,392,057 times.
      
       * "WtF!", exclaims our hero, "that is 27.3 stats for every text
         character in the file!"
      
       * Problem is traced to the fact that we do "-maproot=root" for each
         of the 1344 exports and every parse of that option looks up root
         in the password file and determines which of the 1784 groups in
         /etc/group root belongs to. Each of those 1344 * 1784 "get group
         entry" calls, stats /etc/nsswitch.conf to see if the file has
         changed.
      
       * "Bite me!", sez Mike, and he adds a CACHE_ROOT_CREDS option to
         mountd so that the lookup is only done on the very first instance
         of -maproot=root.
      
      A single incremental update of exports now takes 0.75 seconds.
      89fe803f
  6. 31 Mar, 2015 1 commit
  7. 24 Mar, 2015 1 commit
    • Mike Hibler's avatar
      Hopefully eliminate race in exports_setup when waiting for mountd to finish. · 031b174c
      Mike Hibler authored
      Changed mountd to write the current timestamp into /var/run/mountd.ts
      whenever it has finished processing all exports files. So someone who
      HUPs/USR1s mountd can check and see when the timestamp changes.
      
      We use this in exports_setup.proxy to ensure we do not return before
      mountd has completed parsing and effecting changes. Since I am too lazy
      to check the before and after values of the timestamp, I just remove that
      file just before signalling, and then wait for it to reappear to signify
      that mountd is done.
      031b174c
  8. 26 Jan, 2015 1 commit
  9. 13 Jan, 2015 1 commit
  10. 24 Sep, 2012 1 commit
    • Eric Eide's avatar
      Replace license symbols with {{{ }}}-enclosed license blocks. · 6df609a9
      Eric Eide authored
      This commit is intended to makes the license status of Emulab and
      ProtoGENI source files more clear.  It replaces license symbols like
      "EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
      blocks that contain actual license statements.
      
      This change was driven by the fact that today, most people acquire and
      track Emulab and ProtoGENI sources via git.
      
      Before the Emulab source code was kept in git, the Flux Research Group
      at the University of Utah would roll distributions by making tar
      files.  As part of that process, the Flux Group would replace the
      license symbols in the source files with actual license statements.
      
      When the Flux Group moved to git, people outside of the group started
      to see the source files with the "unexpanded" symbols.  This meant
      that people acquired source files without actual license statements in
      them.  All the relevant files had Utah *copyright* statements in them,
      but without the expanded *license* statements, the licensing status of
      the source files was unclear.
      
      This commit is intended to clear up that confusion.
      
      Most Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the Affero GNU General Public License, version 3
      (AGPLv3).
      
      Most Utah-copyrighted files related to ProtoGENI are distributed under
      the terms of the GENI Public License, which is a BSD-like open-source
      license.
      
      Some Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the GNU Lesser General Public License, version 2.1
      (LGPL).
      6df609a9
  11. 08 Jul, 2012 1 commit
    • Mike Hibler's avatar
      Patch to add frisbee and pubsub dissectors to wireshark. · 388ef6bc
      Mike Hibler authored
      Did the pubsub one a long time ago, but added a frisbee one as well.
      
      The pubsub dissector has not been tested in its wireshark 1.8 incarnation,
      I just converted it from the 1.2.10 version and made sure it compiled.
      The frisbee dissector just supports the base UDP protocol (not the TCP
      master server protocol) and doesn't implement wireshark conversations.
      
      This last few commits were the result of a two-day trip into the weeds.
      This started out as getting a hack shared 10Gb LAN working on the new 820
      nodes. Then I decided to test it out by running frisbee at high bandwidth
      over that LAN. Next thing you know, I'm out in the fields, looking at
      frisbee traces and tweaking Linux sysctls...
      388ef6bc
  12. 11 Jan, 2011 1 commit
  13. 20 Aug, 2008 1 commit
  14. 15 Aug, 2008 2 commits
  15. 25 Jul, 2008 1 commit
  16. 31 Aug, 2006 1 commit
    • Kevin Atkinson's avatar
      · 964b8d11
      Kevin Atkinson authored
      Add patch to modify Mysql.pm to allow setting the "InactiveDestroy" in
      the underlying DB handle.  Also avoid disconnecting the file handle
      explistly on DESTROY as that will be taken care of in the DESTROY
      method for the the DB handle.
      
      Override perl version of fork() to set InactiveDestroy in all open
      database handles in the child so that it won't send a disconnect when
      the handle is destroyed as this will also close the database handle
      for the parent.  It will also call tblog_new_child_process in the
      child process to properly inform tblog of the new process. This will
      be a NoOp if the libtblog module is not loaded.
      964b8d11
  17. 24 Feb, 2006 1 commit
    • Leigh Stoller's avatar
      Two main changes: · be69c6e4
      Leigh Stoller authored
      * Add mailman to the install process. This includes the package
        install, all the setup needed in ops-install, and the little patches
        we apply locally.
      
        Note: Only under 6.0: no point in going backwards since its a pain
        in the ass to build these packages for the 4.10 image.
      
      * Push more of the package install back down into the ops/boss install
        scripts. This improves testing within those scripts, and avoids
        duplication. There are some changes in rc.mkelab that will temp
        mount the package dir on /packages for the benefit of the scripts.
      be69c6e4
  18. 17 Feb, 2006 1 commit
  19. 08 Feb, 2006 1 commit
  20. 14 Sep, 2005 1 commit
    • Mike Hibler's avatar
      Changes related to allowing seperate 'fs' (file server) node. · c53d5827
      Mike Hibler authored
      Entailed new instructions for manual setup as well as integration into
      elabinelab framework.  First, the manual path:
      
      setup.txt, setup-boss.txt, setup-ops.txt and new setup-fs.txt:
          Updated to reflect potential for separate fs node.  The org here
          is a little dicey and could be confusing with ops+fs vs. ops and fs.
          Has not been field tested yet.
      
      */GNUmakefile.in: new fs-install target.
      
      configure, configure.in, defs-*:
          Somewhat unrelated, make min uid/gid to use be a defs setting.
          Also add config of fs-install.in script.
      
      boss-install.in, ops-install.in and new fs-install.in:
          Handle distinct fs node.  If you have one, fs-install is run before
          ops-install.  All scripts rely on the defs file settings of FSNODE
          and USERNODE to determine if the fs node is seperate.
      
      utils/checkquota.in:
          Just return "ok" if quotas are not used (i.e., if defs file FS_WITH_QUOTA
          string is null.
      
      install/ports/emulab-fs:
          Meta port for fs node specific stuff.  Also a patch for the samba port
          Makefile so it doesn't drag in CUPs, etc.  Note that the current samba
          port Makefile has this change, I am just backporting to our version.
      
      Elabinelab specific changes:
      
      elabinelab-withfs.ns:
          NS fragment used in conjunction with
      	tb-elab-in-elab-topology "withfs"
          to setup inner-elab with fs node.
      
      elabinelab.ns:
          The hard work on the boss side.  Recognize seperate-fs config and handle
          running of rc.mkelab on that node.  fs setup happens before ops setup.
      
      rc.mkelab:
          The hard work on the client side.  Recognize FsNode setup as well as
          differentiate ops+fs from ops setup.
      
      Related stuff either not part of the repo or checked in previously:
          emulab-fs package
      c53d5827
  21. 01 Oct, 2004 1 commit
  22. 20 Sep, 2004 1 commit
  23. 05 Mar, 2003 1 commit
  24. 23 Sep, 2002 1 commit