1. 04 May, 2011 1 commit
  2. 22 Oct, 2010 2 commits
  3. 21 Jun, 2010 1 commit
  4. 16 Oct, 2009 1 commit
  5. 28 Sep, 2009 1 commit
    • Mike Hibler's avatar
      A variety of stop-gap changes: · f0885af0
      Mike Hibler authored
       * lint: compile cleanly under newer GCC and on 64-bit OS
       * rename SUBBLOCKSIZE to CHUNKSIZE since that is what it is
       * collect some more stats, primarily for frisbee event collection code
       * add stupid hacky bubble-sort workaround but don't define it by default
         cuz it is stupid...and hacky...but it allows mike to make an image of
         his home machine before he dies of old age
       * tweaks to libntfs version support
  6. 11 Sep, 2009 1 commit
    • Mike Hibler's avatar
      Add '-f' "filemode" option to imagezip for creating image files from regular · 3b61ce12
      Mike Hibler authored
      files (as opposed to from disk partitions).  This is almost identical to
      rawmode, but also knows how to handle inputs that are not a multiple of the
      sector size.  Imagezip will pad out the final sector, but uses a special
      relocation entry (SHORTSECTOR) to tell imageunzip/frisbee how many bytes
      to write in that final sector.
      This is "pretty much" backward compatible.  If an old version of imageunzip
      encounters the unknown new relocation entry, it will ignore it, resulting
      in imageunzip just writing out the additional pad bytes to the output file.
      This may or may not screw over the resulting output file.
      Also fixed some lint found by GCC 4.2 on FBSD7.
  7. 17 Dec, 2008 1 commit
  8. 13 Mar, 2006 1 commit
  9. 06 Jan, 2006 1 commit
  10. 27 Dec, 2005 1 commit
    • Mike Hibler's avatar
      Imagezip groks (BSD) inodes. Since I have not enabled the "more dubious" · a24cc15b
      Mike Hibler authored
      optimization, this will only affect UFS2 filesystems.
      > /*
      >  * If DO_INODES is defined, we look at the inode list in each cylinder group
      >  * and try to make further space reducing optimizations.  If there are
      >  * uninitialized inodes (UFS2 only) we add those blocks to the skip list.
      >  *
      >  * If CLEAR_FREE_INODES is also defined, we make a more dubious optimization.
      >  * Initialized but free inodes will go into the image data, but we first zero
      >  * everything except the (usually randomized) generation number in an attempt
      >  * to reduce the compressed size of the data.
      >  */
      > #define DO_INODES
      > #undef CLEAR_FREE_INODES
  11. 16 Dec, 2005 1 commit
  12. 06 Dec, 2005 1 commit
    • Mike Hibler's avatar
      Minor tweak to free block handling: wait til we have accumulated and merged · dc7b2389
      Mike Hibler authored
      all free blocks before throwing out ones that are too small (-F).  There
      were a fair number of cases where a small free chunk was adjacent to a larger
      one and we were tossing out the smaller.  This does increase the risk that
      we will run out of memory building the free list.  If that happens, we can
      make an incremental cleanup pass.
  13. 03 Dec, 2005 1 commit
  14. 03 Aug, 2005 1 commit
  15. 27 Jan, 2005 1 commit
  16. 10 Jan, 2005 1 commit
    • Mike Hibler's avatar
      Experimental support for Sid's checkpointer. · e753d3e9
      Mike Hibler authored
      The checkpoint driver can return a list of blocks that have been modified
      since its startup.  If you use "imagezip -C /dev/shd0 -s 1 /dev/ad0 foo.ndz"
      imagezip will make an ioctl call on the shd device to get the modified
      blocks it needs to save (rather than parsing the filesystem).  It then
      creates an image using those blocks.
      The end result should be an "incremental" image that can be put down on
      the disk by frisbee after the original image has been loaded.
      This is all a theory right now (including the ioctl :-) but should get
      tested RSN.
  17. 15 Nov, 2004 1 commit
    • Mike Hibler's avatar
      Move a little closer to being pedantic ansi: · ebc4c413
      Mike Hibler authored
      - add some missing casts
      - avoid void * arithmetic
      - change "q" printf formats to "ll"
      Still not there yet by any means.  Note that the version of the NTFS library
      we use won't compile with "-pedantic -ansi" so those are not part of the
      default CFLAGS.
  18. 19 Apr, 2004 1 commit
  19. 07 Apr, 2004 2 commits
  20. 12 Mar, 2004 1 commit
    • Mike Hibler's avatar
      Random imagezip hacking: · 27d76461
      Mike Hibler authored
      1. Make imagezip (and imageunzip) understand LILO bootblocks.
         Imagezip will create relocation information for all the absolute
         blocks that LILO embeds in the partition.  Imageunzip will correctly
         relocate those locations when laying down the new image.  Thus
         Linux slice images can be layed down anywhere on the disk (as can
         BSD images).
      2. Because #1 is incompatible with the old imageunzip, I bumped the
         imagezip format version number (to 3) on images that contain relocations
         (i.e., slice images).  Make sure you have a new imageunzip to unzip
         new slice images.  Whole disk images are still created as version 2
         since they contain no relocs and thus are no different than before.
      3. Added -N option to imagezip to create slice images without any
         relocations.  [ We could create our Emulab images this way, since we
         don't have any mechanism for, or reason to, let the user choose which
         partition to load an image in.  Hence our slice images always wind up...
  21. 08 Mar, 2004 1 commit
  22. 24 Oct, 2003 1 commit
    • Mike Hibler's avatar
      Introducing imagezip redux! · 0063d2c4
      Mike Hibler authored
      Ok, not really any fundamental changes, mostly a source reorganization,
      but some new features as well:
      1. Split off FS specific code for all FS types into subdirectories.
         imagezip.c was just getting unwieldy.  You can now (in theory, I
         haven't enabled this in any easy way) build a version of imagezip
         with only the FSes you care about.
      2. As part of the above, localize the filesystem specific headers in
         the subdirs instead of relying on the installed system headers.
         This allows easy building of, for example, BSD FS support under
      3. Hacked up the GNUmakefiles some so that imagezip with all FS support
         will build (in the Emulab context) under Linux and FreeBSD 5.1 as
         well as FreeBSD 4.x.  Still a hack, for Linux you need to first do:
      	setenv LINUX 1
      	setenv HAVE_GCC3 1
      	setenv HAVE_LOCALE 1
         and for FreeBSD 5.x:
      	setenv HAVE_GCC3 1
      	setenv HAVE_LOCALE 1
         these trigger ifdefs in some of the Makefiles to DTRT.  Imagezip
         and frisbee still need a standalone configure...
      4. Added support for UFS2 (aka FreeBSD 5.x default filesystems).
      5. Added "-S dos-type" option to imagezip.  This is the general form
         of the -b, -l, and -n options to force imagezip to treat the device
         as though it contains a filesystem of the indicated type.
  23. 17 Oct, 2003 1 commit
  24. 03 Oct, 2003 1 commit
    • Mike Hibler's avatar
      First cut at Windows FAT support. With code from the FreeBSD fsck_msdosfs · a706c6fb
      Mike Hibler authored
      program, it only took a couple of hours.  Heavily tested: it didn't core dump
      examining my 20GB FAT32 partition, ship it!
      Actually, I did imagezip/imageunzip a FAT12 DOS floppy.  Since imagezip
      files are a minimum of 1MB (the chunk size), it is probably not practical
      for saving 1.4MB floppies :-)
      Also, updated the man page.
  25. 02 Oct, 2003 2 commits
    • Mike Hibler's avatar
      Fix bug in computation of max input sector when there are extended partitions. · 4b6a7925
      Mike Hibler authored
      Changes to "info" option
    • Mike Hibler's avatar
      "Support for extended partition tables is easy!" he says... · 4301b8be
      Mike Hibler authored
      "Piece of cake!" he says...
      "15 minutes" he says...
      Well, a day later, we can now deal with extended partition tables.
      It was almost easy.  The offsets in an extended partition table are
      relative to the location of that table...mostly.  The exception is if
      an extended partition table contains an entry for another extended table.
      Then the offset provided is relative to the *first* extended partition
      table found, not the current one.
      This was also complicated by the NTFS library code which needs to be
      fed a device special file corresponding to the filesystem partition.
      So if I am cruising alone creating a whole disk image using /dev/ad0
      and I hit a partition containing an NTFS, I have to figure out the
      BSD name for that particular partition: "hmm..I'm looking at partition 3?
      That would be /dev/ad0s3".  Its easy for the first 4 partitions, but for
      extended partitions, I had to figure out how BSD mapped those partitions
      into device names.  Once I became aware of the DIOCGSLICEINFO ioctl, this
      was easy as it gave back all the info needed.
  26. 03 Sep, 2003 1 commit
  27. 02 Jul, 2003 1 commit
    • Leigh B. Stoller's avatar
      Remove some Linux FS hardwired restrictions and assumptions about the · 2ddfb904
      Leigh B. Stoller authored
      block size. I was only allowing 4K block size FS's, and assumed that
      the group descriptor map was in the second block (not true when the
      blocksize if 1K), and that the number of blocks in a descriptor as 8
      times the block size. Also moved some sanity checks around, and
      cleaned up a couple of seeks. Now works on the baleep image, which is
      where we first noticed the problem.
  28. 23 Jun, 2003 1 commit
    • Mike Hibler's avatar
      A couple of new options inspired by home use: · 39b1f04c
      Mike Hibler authored
      1. From the "Thank you DOS for all your stupid limits" department
         we have an enhancement to the -I option to ignore a slice.
         The slice number can be followed by a BSD partition letter
         (e.g., "-I1g") to ignore a BSD partition within a slice.
         Ditto for the -R options which forces raw compression.
      2. From the "Gee, I shoulda taken that grinding noise more seriously"
         department we have the -X option to force imagezip to try e(X)tremely
         hard (yeah, yeah, its the only letter I could come up with) to read
         the data off the disk, even faking (zero) data if a read fails after
         10 tries.
  29. 14 Jun, 2003 1 commit
  30. 09 Apr, 2003 1 commit
    • Mike Hibler's avatar
      Frisbee general: · 9e55b0b1
      Mike Hibler authored
      1. Implement PREQUEST message which passes a bit map of desired blocks.
         We still use the REQUEST message (start block + number of blocks) for
         full chunk requests as that is more efficient.  This message also
         includes a flag indicating whether it is a retry of a request we
         originally made or not.  This gives the server more accurate loss info.
      2. More stats and tracing goo.
      Frisbee client:
      1. Add 'C' and 'W' command line options to specify amount of memory
         for chunk buffers (network buffering) and for write buffers (disk
         buffering).  The Emulab frisbee startup script uses these to partition
         up all the available memory on a machine.  Previously we were just
         using a fixed ~128MB even though our machines have 256 or 512MB of
         memory.  Also add the 'M' option which specifies the overall memory,
         internally dividing it up between chunk buffers and write buffers.
      2. Add 'S' command line option to explicitly specify the server.  This
         allows us to make a feeb......
  31. 31 Mar, 2003 1 commit
  32. 21 Mar, 2003 1 commit
  33. 25 Jan, 2003 1 commit
  34. 21 Jan, 2003 1 commit
    • Mike Hibler's avatar
      Add option to vary the minimum free range size. · bc67baa3
      Mike Hibler authored
      This replaces a couple of ad-hoc checks in the FreeBSD and Linux filesystem
      code.  The idea is that we record a free range only if it is over a certain
      length.  This has the effect of combining multiple short allocated ranges
      into a single range, making for more efficient disk writes in the unzipper.
  35. 17 Jan, 2003 1 commit
  36. 17 Dec, 2002 2 commits