cvs commit: src/sbin/hammer hammer_util.h ondisk.c src/sbin/newfs_hammer newfs_hammer.c src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_disk.h hammer_freemap.c hammer_vfsops.c

Matthew Dillon dillon at
Tue Feb 19 16:56:16 PST 2008

dillon      2008/02/19 16:55:51 PST

DragonFly src repository

  Modified files:
    sbin/hammer          hammer_util.h ondisk.c 
    sbin/newfs_hammer    newfs_hammer.c 
    sys/vfs/hammer       hammer.h hammer_blockmap.c hammer_disk.h 
                         hammer_freemap.c hammer_vfsops.c 
  HAMMER 29/many: Work on the blockmap, implement the freemap.
  * Split the blockmap structure into a blockmap header (in the volume header),
    layer1, and layer2 structure.  The layer1 structure is 32 bytes, the
    layer2 structure is 16 bytes.
    Layer1:  262144 32-byte entries (18 bits)
    Layer2:  524288 16-byte entries (19 bits)
    Bigblock: 23 bits
    Total: 60 bits (1 MTB == 1024 Petabytes)
  * Start working on the allocation cycler, but it isn't finished yet.
  * Implement the freemap.  The freemap is basically a special-cased blockmap.
    The top 8 bits of Layer1 are used as a volume identifier.  A physical
    offset can be looked up via freemap and the layer2 entry will indicate
    which virtual offset it has been mapped to.  This will allow us to
    reallocate blocks when contracting the size of a volume (or if we desire
    to reallocate the block generally).
  Revision  Changes    Path
  1.10      +8 -2      src/sbin/hammer/hammer_util.h
  1.12      +217 -51   src/sbin/hammer/ondisk.c
  1.19      +34 -15    src/sbin/newfs_hammer/newfs_hammer.c
  1.38      +5 -2      src/sys/vfs/hammer/hammer.h
  1.3       +154 -59   src/sys/vfs/hammer/hammer_blockmap.c
  1.24      +82 -31    src/sys/vfs/hammer/hammer_disk.h
  1.2       +131 -9    src/sys/vfs/hammer/hammer_freemap.c
  1.20      +1 -26     src/sys/vfs/hammer/hammer_vfsops.c

More information about the Commits mailing list