Annotation of embedaddon/rsync/patches/slow-down.diff, revision 1.1.1.1

1.1       misho       1: This patch adds a --slow-down=USECs option that causes the sender to scan
                      2: the filelist more slowly, and the generator to scan for deletions more
                      3: slowly.  It doesn't do anything to make anyone slow down during the normal
                      4: transfer processing, though.
                      5: 
                      6: The idea is to lessen rsync's impact on disk I/O.  Unfortunately, there
                      7: should really be a way to affect more of rsync's processing, perhaps by
                      8: specifying a maximum disk I/O rate (and have that affect a maximum stat()
                      9: rate or something like that).
                     10: 
                     11: To use this patch, run these commands for a successful build:
                     12: 
                     13:     patch -p1 <patches/slow-down.diff
                     14:     ./configure                           (optional if already run)
                     15:     make
                     16: 
                     17: based-on: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
                     18: diff --git a/flist.c b/flist.c
                     19: --- a/flist.c
                     20: +++ b/flist.c
                     21: @@ -73,6 +73,7 @@ extern int sender_symlink_iconv;
                     22:  extern int output_needs_newline;
                     23:  extern int sender_keeps_checksum;
                     24:  extern int unsort_ndx;
                     25: +extern unsigned long sleep_asec;
                     26:  extern uid_t our_uid;
                     27:  extern struct stats stats;
                     28:  extern char *filesfrom_host;
                     29: @@ -1837,6 +1838,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
                     30:                }
                     31:  
                     32:                send_file_name(f, flist, fbuf, NULL, flags, filter_level);
                     33: +              /* Sleep for a bit, to avoid hammering the disk. */
                     34: +              if (sleep_asec)
                     35: +                      usleep(sleep_asec);
                     36:        }
                     37:  
                     38:        fbuf[len] = '\0';
                     39: diff --git a/options.c b/options.c
                     40: --- a/options.c
                     41: +++ b/options.c
                     42: @@ -113,6 +113,7 @@ int size_only = 0;
                     43:  int daemon_bwlimit = 0;
                     44:  int bwlimit = 0;
                     45:  int fuzzy_basis = 0;
                     46: +unsigned long sleep_asec = 0;
                     47:  size_t bwlimit_writemax = 0;
                     48:  int ignore_existing = 0;
                     49:  int ignore_non_existing = 0;
                     50: @@ -764,6 +765,7 @@ static struct poptOption long_options[] = {
                     51:    {"itemize-changes", 'i', POPT_ARG_NONE,   0, 'i', 0, 0 },
                     52:    {"no-itemize-changes",0, POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
                     53:    {"no-i",             0,  POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
                     54: +  {"slow-down",        0,  POPT_ARG_LONG,   &sleep_asec, 0, 0, 0 },
                     55:    {"bwlimit",          0,  POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
                     56:    {"no-bwlimit",       0,  POPT_ARG_VAL,    &bwlimit, 0, 0, 0 },
                     57:    {"backup",          'b', POPT_ARG_VAL,    &make_backups, 1, 0, 0 },
                     58: diff --git a/rsync.1.md b/rsync.1.md
                     59: --- a/rsync.1.md
                     60: +++ b/rsync.1.md
                     61: @@ -459,6 +459,7 @@ detailed description below for a complete description.
                     62:  --early-input=FILE       use FILE for daemon's early exec input
                     63:  --list-only              list the files instead of copying them
                     64:  --bwlimit=RATE           limit socket I/O bandwidth
                     65: +--slow-down=USECs        sleep N usec while creating the filelist
                     66:  --stop-after=MINS        Stop rsync after MINS minutes have elapsed
                     67:  --stop-at=y-m-dTh:m      Stop rsync at the specified point in time
                     68:  --write-batch=FILE       write a batched update to FILE
                     69: diff -Nurp a/rsync.1 b/rsync.1
                     70: --- a/rsync.1
                     71: +++ b/rsync.1
                     72: @@ -535,6 +535,7 @@ detailed description below for a complet
                     73:  --early-input=FILE       use FILE for daemon's early exec input
                     74:  --list-only              list the files instead of copying them
                     75:  --bwlimit=RATE           limit socket I/O bandwidth
                     76: +--slow-down=USECs        sleep N usec while creating the filelist
                     77:  --stop-after=MINS        Stop rsync after MINS minutes have elapsed
                     78:  --stop-at=y-m-dTh:m      Stop rsync at the specified point in time
                     79:  --write-batch=FILE       write a batched update to FILE
                     80: diff -Nurp a/rsync.1.html b/rsync.1.html
                     81: --- a/rsync.1.html
                     82: +++ b/rsync.1.html
                     83: @@ -450,6 +450,7 @@ detailed description below for a complet
                     84:  --early-input=FILE       use FILE for daemon's early exec input
                     85:  --list-only              list the files instead of copying them
                     86:  --bwlimit=RATE           limit socket I/O bandwidth
                     87: +--slow-down=USECs        sleep N usec while creating the filelist
                     88:  --stop-after=MINS        Stop rsync after MINS minutes have elapsed
                     89:  --stop-at=y-m-dTh:m      Stop rsync at the specified point in time
                     90:  --write-batch=FILE       write a batched update to FILE

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>