Wayne Davison [Thu, 15 Jan 2004 07:42:21 +0000 (07:42 +0000)]
- Call io_flush() with its new FULL_FLUSH/NORMAL_FLUSH arg.
- Got rid of the recv_pipe between the receiver and the generator.
- Use new send_msg(MSG_DONE,...) call to signal the generator
when the receiver is done.
- Use the new get_redo_num() call in the generator to read the
final -1 from the receiver.
Wayne Davison [Thu, 15 Jan 2004 07:42:17 +0000 (07:42 +0000)]
- Moved the err_list* stuff here from log.c and renamed them msg_list*.
- Renamed log_error_fd to msg_fd_out, and io_error_fd to msg_fd_in.
- Added a redo_list* to keep track of any redo items that come over
the message channel from the receiver to the generator.
- The io_flush() and msg_list_push() functions now take an arg:
NORMAL_FLUSH or FULL_FLUSH. The latter ensures that we don't lose
any log messages that haven't gotten written from the msg_list.
- Added a send_msg() function that log.c calls to send any remote
log messages. It is also called to send the new MSG_REDO and
MSG_DONE messages.
Wayne Davison [Fri, 9 Jan 2004 18:19:32 +0000 (18:19 +0000)]
- Never allocate a useless sum array for a non-regular flist item.
- Don't transmit the sum array for non-regular files (p28 onward).
- Tweaked a couple comments.
Wayne Davison [Thu, 8 Jan 2004 22:45:12 +0000 (22:45 +0000)]
Updated the send_file_name() and receive_file_entry() functions to make
some of the variable names more logical in the new program flow. Also
improved the setting of the new last_rdev value that only remembers the
high 3 bytes.
Wayne Davison [Thu, 8 Jan 2004 11:08:30 +0000 (11:08 +0000)]
Implemented an extended-flag-byte in the transfer protocol by moving
the SAME_RDEV bit into the next 8 bits and adding an EXTENDED_FLAG
bit. Also modified the meaning of this bit for protocol 28 and above:
SAME_HIGH_RDEV indicates that all but the lowest byte matches. The
older protocols get OLD_SAME_RDEV set (with the old semantics) for
compatibility. Note also that protocol 28 isn't turned on yet.
Wayne Davison [Thu, 8 Jan 2004 04:56:27 +0000 (04:56 +0000)]
Improved the code in send_file_entry() and receive_file_entry() to
make it a little easier to read and a little more optimized. Also
made the flag size in our function calls match the size of the flags
in the flist_struct. These changes will make it easier for me to
optimize the sending of the hard-link data in a future commit.
Wayne Davison [Thu, 8 Jan 2004 03:17:07 +0000 (03:17 +0000)]
- No need to check S_ISREG() on files already in the hlink_list.
- The realloc in init_hard_links() might fail if the list is empty
(which can happen if there are no regular files in the transfer).
I changed the code to free the list in that case.
Wayne Davison [Sun, 4 Jan 2004 18:43:18 +0000 (18:43 +0000)]
Changed recv_generator() to take a "struct file_struct *" instead of
a "struct file_list *", which allows us to call it with a copy of the
current file_struct entry that we've modified. This is better than
modifying the entry directly because the latter causes the shared
memory between the generator and the receiver to slowly vanish as
the in-memory changes happen.
Wayne Davison [Fri, 2 Jan 2004 08:18:53 +0000 (08:18 +0000)]
Use the f_name_to() function to avoid having to strdup() the name that
f_name() returns. Also used in a call to recv_generator() to keep the
name safe for the duration of the call.
Wayne Davison [Fri, 2 Jan 2004 08:05:20 +0000 (08:05 +0000)]
Use f_name_to() when producing a name for the recv_generator() call.
This prevents things like the hard-link code from losing the name
before we're finished with it.
Wayne Davison [Fri, 2 Jan 2004 07:57:02 +0000 (07:57 +0000)]
Optimized f_name(), generating: (1) f_name_cmp(), which optimizes
comparing two file_struct elements without copying them first, and
(2) f_name_to() which lets us supply the destination buffer for a
f_name() call (to allow it to persist without an extra copy).