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.
Wayne Davison [Mon, 18 Dec 2006 06:56:30 +0000 (06:56 +0000)]
Moved the write_stream_flags() call from io.c into main.c so that
it gets called before the transfer starts (thus ensuring that it
can write out un-tweaked values of preserver_[ug]id vars).
Wayne Davison [Sun, 17 Dec 2006 00:40:28 +0000 (00:40 +0000)]
Got rid of the hlink_pool in favor of using the new hashtable code
on the receiving side. This allows us to always use a 32-bit number
to identify the hardlink clusters, even on a system where pointers
are 64-bits. Also made changes to handle the use of F_ROOTDIR() and
F_DEPTH() instead of the old union that wasted space on the
receiving side when pointers are 64-bits.
Wayne Davison [Sun, 17 Dec 2006 00:40:24 +0000 (00:40 +0000)]
- Got rid of "struct idev".
- Use just the 32-bit numbers in the file_extras union.
- Re-ordered the items in the file_struct to avoid padding
on systems with 64-bit pointers.
- Got rid of the "dir" union in the file_struct, making the
two items into "extras": F_DEPTH() for the receiving side,
and F_ROOTDIR() for the sending side.
- Added PTR_EXTRA_LEN define.
- Got rid of F_HL_IDEV() define.
Wayne Davison [Sat, 16 Dec 2006 19:24:14 +0000 (19:24 +0000)]
Use the new rounding.h file to optionally round up the count of
extra values we put at the start of the file_struct. Also, deal
with the extras variable no longer being in the file_struct.
Wayne Davison [Fri, 15 Dec 2006 22:31:13 +0000 (22:31 +0000)]
Added a simple hashtable routine for hashing st_dev and st_ino info
on the sending side, and the support routines for the receiving side
that handle using a "group number" for each hard-link cluster rather
than having to manage a pool of dev+inode data. (For protocol 30)
Wayne Davison [Fri, 15 Dec 2006 22:31:10 +0000 (22:31 +0000)]
For protocol 30, the sender uses the new idev_node() hashfile
routine to keep track of which item is the first one in a particular
hard-link cluster. It then abbreviates the sending of any follow-on
items in the cluster, reducing transfer bytes. It also omits the
sending of any dev+inode data to the receiver, saving even more xfer
bytes (since the receiver can associate the entries based on the the
group's index number that is sent when abbreviating an entry).
Wayne Davison [Fri, 15 Dec 2006 22:31:07 +0000 (22:31 +0000)]
- The XMIT_SAME_DEV define is now pre-protocol-30 specific.
- Added XMIT_HLINK_FIRST define.
- Added struct idev_node.
- Added F_HL_GNUM() for protocol 30 (used in place of F_HL_IDEV()).