For the small number of people who are checking this out, I released version 0.05 a couple days ago (and only mentioned it on my new-protocol web page) followed today by 0.06. Some highlights of the two releases: - We handle symlinks now in our recursive synchronization mode. - Directory scanning is no longer limited to one active directory at a time (which was sorely needed when all the directories were up-to-date). - Improved the "rs" control script, including the addition of the ability to specify a different destination name (previously only existing destination directories could be specified). - Added a README with the latest command syntax for controlling rzync. - Some much-needed cleanup of internal structures. - Fixed several bugs. Web resources: http://www.clari.net/~wayne/rZync-0.06.tar.gz http://www.clari.net/~wayne/new-protocol.html There are still unsquashed bugs lurking, so be careful. For instance, I tried to copy my .mozilla dir, and the huge Cache hierarchy is currently giving it grief. I'll debug this problem next. ..wayne..
On Wed, 26 Jun 2002, Wayne Davison wrote:> There are still unsquashed bugs lurking, so be careful. For instance, I > tried to copy my .mozilla dir, and the huge Cache hierarchy is currently > giving it grief. I'll debug this problem next.Turned out to be a silly oversight on a realloc of some directory data. Applying the following patch fixes things right up. ..wayne.. ---8<------8<------8<------8<---cut here--->8------>8------>8------>8--- Index: flist.c --- flist.c 26 Jun 2002 08:45:21 -0000 1.15 +++ flist.c 26 Jun 2002 17:41:45 -0000 @@ -52,10 +52,14 @@ } len = strlen(fn); if (bp-flist_data + len + 1 > flist_data_size) { - int blen = bp - flist_data; + uchar *old_data = flist_data; flist_data_size *= 2; flist_data = do_realloc(flist_data, flist_data_size); - bp = flist_data + blen; + if (flist_data != old_data) { + for (j = 0; j < cnt; j++) + flist_ptrs[j] += flist_data - old_data; + bp += flist_data - old_data; + } } memcpy(bp, fn, len + 1); flist_ptrs[cnt++] = bp; @@ -95,8 +99,10 @@ continue; // XXX ignore devices for now! } if (bp - compressed_data + PATH_MAX*2 > compressed_data_size) { + int blen = bp - compressed_data; compressed_data_size += 4*1024; compressed_data = do_realloc(compressed_data, compressed_data_size); + bp = compressed_data + blen; } len = strlen(fn); populate_attrs(&attrs, &sb); ---8<------8<------8<------8<---cut here--->8------>8------>8------>8---
Martin Pool
2002-Jul-11 02:08 UTC
superlifter design notes (was Re: Latest rZync release: 0.06)
I've put a cleaned-up version of my design notes up here http://samba.org/~mbp/superlifter/design-notes.html It's very early days, but (gentle :-) feedback would be welcome. It has some comments on Wayne's rzync design, which on the whole looks pretty clever. I don't have any worthwhile code specifically towards this yet, but I have been experimenting with the protocol ideas in distcc http://distcc.samba.org/ I like the way it has worked out there: the protocol is simple and easy to understand, the bugs more or less "found themselves", and it feels like I'm using TCP in a natural way -- all of these much more so than rsync at the moment. (Of course, the rsync problem is much more complicated.) -- Martin