Annotation of embedaddon/rsync/patches/slow-down.diff, revision 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>