On Sun, Jan 26, 2003 at 02:46:43PM -0800, Craig Barratt wrote: > > Is there any reason why caching programs would need to set the > > value, rather than it just being a fixed value? > > I think it is hard to describe what this is for and what it should be > > set to. Maybe a --fixed-checksum-seed option would make some sense, > > or for a caching mechanism to be built in to rsync if it is shown to > > be very valuable. > > A fixed value would be perfectly ok; the same magic value that batch > mode uses (32761) would make sense. > > > I know people have proposed some caching mechanisms in the past and > > they've been rejected for one reason or another. > > One difficulty is that additional files, or new file formats, are needed > for storing the checksums, and that moves rsync further away from its > core purpose. > > > I don't think I'll include the option in 2.5.6. > > If I submitted a new patch with --fixed-checksum-seed, would you be > willing to at least add it to the patches directory for 2.5.6? > > I will be adding block and file checksum caching to BackupPC, and > that needs --fixed-checksum-seed. This will save me from providing > a customized rsync (or rsync patches) as part of BackupPC; I would > much rather tell people to get a vanilla 2.5.6 rsync release and > apply the specific patch that comes with the release.
Block checksums come from the receiver so cached block checksums are only useful when sending to a server which had better know it has block checksums cached. It should be relatively easy to add a test prior to setup_protocol() to determine if block checksums are cached. Given those circumstances it shouldn't be necessary to add any command-line option for this. Further, that test could set the checksum_seed so setup_protocol could test checksum_seed to see if it is alread set and not alter it eliminating the need for a checksum_seed_set. In fact doing as above and moving checksum_seed = FIXED_CHECKSUM to the places in options.c where read_batch and write_batch are set would allow reducing the checksum_seed portion of setup_protocol like so: if (remote_version >= 12) { if (am_server) { - if (read_batch || write_batch) /* dw */ - checksum_seed = 32761; - else - checksum_seed = time(NULL); + if(!checksum_seed) checksum_seed = time(NULL); write_int(f_out,checksum_seed); } else { checksum_seed = read_int(f_in); } } Not only simplifying the code but i think rendering it more understandable. To save someone from looking, checksum_seed is initialized to 0 as part of the declaration in checksum.c -- ________________________________________________________________ J.W. Schultz Pegasystems Technologies email address: [EMAIL PROTECTED] Remember Cernan and Schmitt -- To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.tuxedo.org/~esr/faqs/smart-questions.html