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 crater.dragonflybsd.org
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
Log:
Major continuing work on jscan, the userland backend for the journaling
system.
* 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
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/Makefile.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/dump_debug.c.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/jfile.c.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/jscan.8.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/jscan.c.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/jscan.h.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/jstream.c.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sbin/jscan/subs.c.diff?r1=1.2&r2=1.3&f=u
More information about the Commits
mailing list