cvs commit: src/sbin/jscan Makefile dump_debug.c dump_mirror.c jattr.h jfile.c jscan.8 jscan.c jscan.h jstream.c subs.c

Matthew Dillon dillon at
Mon Jul 4 17:27:10 PDT 2005

dillon      2005/07/04 17:26:03 PDT

DragonFly src repository

  Modified files:
    sbin/jscan           Makefile dump_debug.c jfile.c jscan.8 
                         jscan.c jscan.h jstream.c subs.c 
  Added files:
    sbin/jscan           dump_mirror.c jattr.h 
  Major continuing work on jscan, the userland backend for the journaling
  * Fix bugs in the stream demultiplexing code.  Only the first stream header
    is supposed to be passed to the virtualized stream code.  We were passing
    the stream header and trailer for each meta record and the extra meta-data
    really confused the virtualized stream scanning code.
  * Add support for unknown nesting record sizes.  This occurs when the
    nesting record in the virtual stream is too large to fit in the kernel's
    in-memory journal FIFO.  This allows us to arbitrarily push and pop
    elements of a transaction without having to know the size of the completed
    transaction in advance.
  * Use a 64 bit integer to calculate the completed transaction size.  Note
    however that currently the stream reconstruction code uses malloc so
    there are serious limits to what it can reconstruct.
  * Implement (partial) support for mirroring.  Only basic file and directory
    creation, write, remove, and rename is currently decoded.
  The TODO list is long and varied.  We need to use mmap() instead of malloc()
  to reference journal data.  We need to finish implementing mirror mode.  We
  need a catch-up or restart mode for the mirror.  We need raw journal data
  logging, we need stream ackknowledgements, and a thousand other things.
  This example will maintain a mirror of /usr in /usr_mirror in real time.
  Again, remember that there is a lot more work to do.... the mirroring isn't
  perfect by a long shot.  We don't do symlinks for example, yet, and there
  are many other issues.
      # Warning: do not ^Z mountctl!
      cpdup /usr /usr_mirror
      cd /usr_mirror
      mountctl -a /usr:test | jscan -m stdin
      [does not return]
      [to terminate, type 'mountctl -d test' in another shell window]
  Revision  Changes    Path
  1.2       +2 -1      src/sbin/jscan/Makefile
  1.3       +59 -37    src/sbin/jscan/dump_debug.c
  1.3       +1 -1      src/sbin/jscan/jfile.c
  1.2       +1 -1      src/sbin/jscan/jscan.8
  1.3       +20 -6     src/sbin/jscan/jscan.c
  1.3       +31 -2     src/sbin/jscan/jscan.h
  1.2       +40 -16    src/sbin/jscan/jstream.c
  1.3       +116 -0    src/sbin/jscan/subs.c

More information about the Commits mailing list