From d620219dc4c15d252019ef0fd67ae57a3059621f Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 3 Nov 2007 16:30:30 +0000 Subject: [PATCH] A better way to count our queued workload. --- flist.c | 13 +++++-------- generator.c | 8 +------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/flist.c b/flist.c index 429238ad..4d81f150 100644 --- a/flist.c +++ b/flist.c @@ -1657,19 +1657,17 @@ void send_extra_file_list(int f, int at_least) struct file_list *flist; int64 start_write; uint16 prev_flags; - int future_cnt, save_io_error = io_error; + int old_cnt, save_io_error = io_error; if (flist_eof) return; /* Keep sending data until we have the requested number of * files in the upcoming file-lists. */ - if (cur_flist->next) { - flist = first_flist->prev; /* the newest flist */ - future_cnt = flist->ndx_end - cur_flist->next->ndx_start + 1; - } else - future_cnt = 0; - while (future_cnt < at_least) { + old_cnt = cur_flist->used; + for (flist = first_flist; flist != cur_flist; flist = flist->next) + old_cnt += flist->used; + while (file_total - old_cnt < at_least) { struct file_struct *file = dir_flist->sorted[send_dir_ndx]; int dir_ndx, dstart = dir_count; const char *pathname = F_PATHNAME(file); @@ -1730,7 +1728,6 @@ void send_extra_file_list(int f, int at_least) flist_done_allocating(flist); file_total += flist->used; - future_cnt += flist->used; stats.flist_size += stats.total_written - start_write; stats.num_files += flist->used; if (verbose > 3) diff --git a/generator.c b/generator.c index 24435ea6..db0824df 100644 --- a/generator.c +++ b/generator.c @@ -2027,14 +2027,8 @@ void generate_files(int f_out, const char *local_name) do { #ifdef SUPPORT_HARD_LINKS if (preserve_hard_links && inc_recurse) { - while (!flist_eof) { - int cnt = first_flist->prev - ? first_flist->prev->ndx_end - first_flist->ndx_start + 1 - : first_flist->ndx_end - first_flist->ndx_start + 1; - if (cnt >= FILECNT_LOOKAHEAD/2) - break; + while (!flist_eof && file_total < FILECNT_LOOKAHEAD/2) wait_for_receiver(); - } } #endif -- 2.34.1