X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/b17dd0c435d754abc8cafcb5b1464c44f92f73fe..5af50297bedda78bee05adc612954335259fcb41:/TODO diff --git a/TODO b/TODO index 273de17d..5af5d0c6 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,124 @@ -*- indented-text -*- -URGENT --------------------------------------------------------------- +BUGS --------------------------------------------------------------- + +There seems to be a bug with hardlinks + + mbp/2 build$ ls -l /tmp/a /tmp/b -i + /tmp/a: + total 32 + 2568307 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1 + 2568307 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2 + 2568307 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3 + 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4 + 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5 + 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1 + 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2 + 2568310 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3 + + /tmp/b: + total 32 + 2568309 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1 + 2568309 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2 + 2568309 -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3 + 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4 + 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5 + 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1 + 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2 + 2568311 -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3 + mbp/2 build$ rm -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b + building file list ... done + created directory /tmp/b + ./ + a1 + a4 + a2 => a1 + a3 => a2 + wrote 350 bytes read 52 bytes 804.00 bytes/sec + total size is 232 speedup is 0.58 + mbp/2 build$ rm -r /tmp/b + mbp/2 build$ ls -l /tmp/b + ls: /tmp/b: No such file or directory + mbp/2 build$ rm -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b + rm: cannot remove `/tmp/b': No such file or directory + mbp/2 build$ rm -f -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b + building file list ... done + created directory /tmp/b + ./ + a1 + a4 + a2 => a1 + a3 => a2 + wrote 350 bytes read 52 bytes 804.00 bytes/sec + total size is 232 speedup is 0.58 + mbp/2 build$ ls -l /tmp/b + total 32 + -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1 + -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2 + -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3 + mbp/2 build$ ls -l /tmp/a + total 32 + -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a1 + -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a2 + -rw-rw-r-- 3 mbp mbp 29 Mar 25 17:30 a3 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a4 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 a5 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b1 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b2 + -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3 + + +Progress indicator can produce corrupt output when transferring directories: + + main/binary-arm/ + main/binary-arm/admin/ + main/binary-arm/base/ + main/binary-arm/comm/8.56kB/s 0:00:52 + main/binary-arm/devel/ + main/binary-arm/doc/ + main/binary-arm/editors/ + main/binary-arm/electronics/s 0:00:53 + main/binary-arm/games/ + main/binary-arm/graphics/ + main/binary-arm/hamradio/ + main/binary-arm/interpreters/ + main/binary-arm/libs/6.61kB/s 0:00:54 + main/binary-arm/mail/ + main/binary-arm/math/ + main/binary-arm/misc/ + +lchmod + + I don't think we handle this properly on systems that don't have the + call. + + +DAEMON -------------------------------------------------------------- + +server-imposed bandwidth limits +rsyncd over ssh + + There are already some patches to do this. + + BitKeeper uses a server whose login shell is set to bkd. That's + probably a reasonable approach. + + +FEATURES ------------------------------------------------------------ -IMPORTANT ------------------------------------------------------------ + +--dry-run is insufficiently dry + + Mark Santcroos points out that -n fails to list files which have + only metadata changes, though it probably should. + + There may be a Debian bug about this as well. use chroot @@ -16,12 +131,21 @@ use chroot http://lists.samba.org/pipermail/rsync/2001-August/thread.html http://lists.samba.org/pipermail/rsync/2001-September/thread.html + --files-from Avoids traversal. Better option than a pile of --include statements for people who want to generate the file list using a find(1) command or a script. + +supplementary groups + + Perhaps allow supplementary groups to be specified in rsyncd.conf; + then make the first one the primary gid and all the rest be + supplementary gids. + + File list structure in memory Rather than one big array, perhaps have a tree in memory mirroring @@ -245,25 +369,16 @@ zlib do this is to just disable gzip (with a warning) when talking to old versions. + After we get the @RSYNCD greeting from the server, we know it's + version but we have not yet sent the command line, so we could just + remove the -z option if the server is too old. -logging - - Perhaps flush stdout after each filename, so that people trying to - monitor progress in a log file can do so more easily. See - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108 - - At the connections that just get a list of modules are not logged, - but they should be. - - If a child of the rsync daemon dies with a signal, we should notice - that when we reap it and log a message. - - Keep stderr and stdout properly separated (Debian #23626) - - -rsyncd over ssh + For ssh invocation it's not so simple, because we actually use the + command line to start the remote process. However, we only actually + do compression in token.c, and we could therefore once we discover + the remote version emit an error if it's too old. I'm not sure if + that's a good tradeoff or not. - There are already some patches to do this. proxy authentication @@ -341,6 +456,49 @@ chmod: (Suggestion from david.e.sewell) +Incorrect timestamps (Debian #100295) + + A bit hard to believe, but apparently it happens. + + +Check "refuse options works" + + We need a test case for this... + + Was this broken when we changed to popt? + + +PERFORMANCE ---------------------------------------------------------- + +MD4 file_sum + + If we're doing a local transfer, or using -W, then perhaps don't + send the file checksum. If we're doing a local transfer, then + calculating MD4 checksums uses 90% of CPU and is unlikely to be + useful. + + Indeed for transfers over zlib or ssh we can also rely on the + transport to have quite strong protection against corruption. + + Perhaps we should have an option to disable this, analogous to + --whole-file, although it would default to disabled. The file + checksum takes up a definite space in the protocol -- we can either + set it to 0, or perhaps just leave it out. + +MD4 + + Perhaps borrow an assembler MD4 from someone? + + Make sure we call MD4 with properly-sized blocks whenever possible + to avoid copying into the residue region? + +String area code + + Test whether this is actually faster than just using malloc(). If + it's not (anymore), throw it out. + + + PLATFORMS ------------------------------------------------------------ Win32 @@ -408,6 +566,13 @@ If tests are skipped, say why. Test daemon feature to disallow particular options. +Pipe program that makes slow/jerky connections. + +Versions of read() and write() that corrupt the stream, or abruptly fail + +Separate makefile target to run rough tests -- or perhaps just run +them every time? + DOCUMENTATION -------------------------------------------------------- @@ -417,6 +582,19 @@ Keep list of open issues and todos on the web site Update web site from CVS + +Perhaps redo manual as SGML + + The man page is getting rather large, and there is more information + that ought to be added. + + TexInfo source is probably a dying format. + + Linuxdoc looks like the most likely contender. I know DocBook is + favoured by some people, but it's so bloody verbose, even with emacs + support. + + BUILD FARM ----------------------------------------------------------- Add machines @@ -429,15 +607,24 @@ Add machines SCO -NICE ----------------------------------------------------------------- ---no-detach and --no-fork options +LOGGING -------------------------------------------------------------- - Very useful for debugging. Also good when running under a - daemon-monitoring process that tries to restart the service when the - parent exits. + Perhaps flush stdout after each filename, so that people trying to + monitor progress in a log file can do so more easily. See + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108 -hang/timeout friendliness + At the connections that just get a list of modules are not logged, + but they should be. + + If a child of the rsync daemon dies with a signal, we should notice + that when we reap it and log a message. + + Keep stderr and stdout properly separated (Debian #23626) + + Use a separate function for reporting errors; prefix it with + "rsync:" or "rsync(remote)", or perhaps even "rsync(local + generator): ". verbose output @@ -446,6 +633,28 @@ verbose output At end of transfer, show how many files were or were not transferred correctly. +-vv + + Explain *why* every file is transferred or not (e.g. "local mtime + 123123 newer than 1283198") + + +debugging of daemon + + Add an rsyncd.conf parameter to turn on debugging on the server. + + + +NICE ----------------------------------------------------------------- + +--no-detach and --no-fork options + + Very useful for debugging. Also good when running under a + daemon-monitoring process that tries to restart the service when the + parent exits. + +hang/timeout friendliness + internationalization Change to using gettext(). Probably need to ship this for platforms @@ -453,7 +662,10 @@ internationalization Solicit translations. - Does anyone care? + Does anyone care? Before we bother modifying the code, we ought to + get the manual translated first, because that's possibly more useful + and at any rate demonstrates desire. + rsyncsh