Wayne Davison [Fri, 20 Apr 2007 08:16:53 +0000 (08:16 +0000)]
- Changed the {read,write}_longint() functions into separate
{read,write}_varlong() and {read,write}_longint() functions:
the former handles variable-length transmissions, and the
latter is backward-compatible with older rsync versions.
- Improved the {read,write}_var{int,long}() functions to be
simpler and to use a different byte order.
- The {read_write}_varlong() functions also allow the caller
to specify the minimum number of bytes to send. This allows
time values to be sent efficiently with a 4-byte minimum,
while length values continue to be sent with a (more optimal
for them) 3-byte minimum.
Wayne Davison [Sat, 14 Apr 2007 07:10:52 +0000 (07:10 +0000)]
Changed scratchbase from using a "testtmp." name prefix to using a
"testtmp/" name prefix (i.e. using a subdir). This allows me to create
a testtmp as a symlink to a different file system to assist with testing
ACLs and xattrs.
Wayne Davison [Wed, 14 Mar 2007 00:02:39 +0000 (00:02 +0000)]
Next step: allow protocol 30 to be used, but disallow the use
of incremental recursion. If this still avoids the hanging, I
will need to try to track down how inc_recurse can deadlock.
Wayne Davison [Sun, 11 Mar 2007 00:13:34 +0000 (00:13 +0000)]
The ACL support has arrived! This version has a brand new protocol
that makes it incompatible with all prior versions. A patch will be
provided to allow talking with older (patched) rsync versions.
Wayne Davison [Sat, 3 Mar 2007 01:06:45 +0000 (01:06 +0000)]
Moved a couple auto-filter rules from options.c into compat.c so
that we are sure to only apply the perishable filter modifier when
the receiving side is new enough to understand it.
Wayne Davison [Sat, 17 Feb 2007 17:00:40 +0000 (17:00 +0000)]
Make sure that a newly-created destination directory gets the same
rules applied to it as other newly-created directories when --perms
wasn't specified.
Wayne Davison [Fri, 16 Feb 2007 02:35:31 +0000 (02:35 +0000)]
Improved the incremental sending of file lists in two ways: (1)
when the sender gets an index of a file to send, we make sure to
send enough future file-list data relative to the new cur_flist
value before we send the data for the file transfer (ensuring that
the generator gets the data in a more timely manner), and (2) the
generator flushes the output socket after each file-list object
has completed its scan so that the sender knows in a more timely
manner that more list data is needed.
Wayne Davison [Sat, 3 Feb 2007 05:13:17 +0000 (05:13 +0000)]
The "ndx" variable now holds the unique, over-the-wire value, not
a value that is relative to the cur_flist object. This makes the
variable consistent with how the sender and the receiver use it.
Wayne Davison [Sat, 3 Feb 2007 05:13:14 +0000 (05:13 +0000)]
The ndx arg passed to increment_active_files() is now the unique,
over-the-wire value, making it consistent with the ndx arg that
is passed to decrement_active_files().
Wayne Davison [Wed, 31 Jan 2007 21:45:42 +0000 (21:45 +0000)]
Changed the main file-scan loop to not check for redo items when
in incremental recurse mode -- it is enough to check for them
when changing from one file-list to another.
Wayne Davison [Tue, 30 Jan 2007 03:57:52 +0000 (03:57 +0000)]
- Renamed done_cnt -> msgdone_cnt.
- Changed increment_active_files() to call check_for_finished_files()
and to avoid calling both io_flush() and read_msg_fd() in the same
iteration of a loop (since the former may have called the latter).
Wayne Davison [Tue, 30 Jan 2007 03:57:48 +0000 (03:57 +0000)]
Moved the code that checks for finished file-lists, for finished "redo"
sends, and finished hard-links into check_for_finished_files(), a new
function that takes the place of check_for_finished_hlinks(). This
lets us signal the sender more rapidly when a file-list is done (which
ensures that it sends us more work to do in a timely manner), and also
avoids two potential deadlocks in the old code.
Wayne Davison [Sat, 27 Jan 2007 16:30:33 +0000 (16:30 +0000)]
- Fixed a potential hang bug in wait_for_receiver() that could occur
if the io_flush() call happened to read the last message from the
receiver, causing the read_msg_fd() call to deadlock.
- Fixed an error-looping problem when the server-side receiver failed
to send a message down the error-msg pipe: we no longer try to send
a new error about this new failure down the same failing pipe.
- Make sure that we stop any deferring of forwarded messages in the
generator when we are exiting with an error.
Wayne Davison [Sat, 27 Jan 2007 14:34:15 +0000 (14:34 +0000)]
The last MSG_DONE from the receiver to the generator is now followed
by the stats.total_read value so that the generator can set its value
to that of the receiver. This makes log_exit() log the right value
when we're on the server side.
Wayne Davison [Fri, 29 Dec 2006 00:55:28 +0000 (00:55 +0000)]
- Put directory retouching code into a separate function that
is now called for all our touch-up needs.
- Fixed a problem with --delete-delay interfering with the
directory-time touch-up in incremental mode.
Wayne Davison [Fri, 29 Dec 2006 00:12:42 +0000 (00:12 +0000)]
- My use of readfd_unbuffered() in read_msg_fd() really needed to be
readfd() so that the buffer is never partially filled.
- Make sure that msg2genr_flush() does not flush any messages while
the flist-forwarding is active.
- Changed io_flush() to honor its flush_it_all arg again.
Wayne Davison [Thu, 28 Dec 2006 09:42:44 +0000 (09:42 +0000)]
- Define F_OWNER() and F_GROUP() to be used for assigning the UID and GID.
- F_UID() is now defined to return a uid_t value.
- F_GID() is now defined to return a gid_t value.