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.
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).
11 To use this patch, run these commands for a successful build:
13 patch -p1 <patches/slow-down.diff
14 ./configure (optional if already run)
17 based-on: 4c0a4067df2516ce50e12a7d3ae572275fa9fc0b
18 diff --git a/flist.c b/flist.c
21 @@ -75,6 +75,7 @@ extern int output_needs_newline;
22 extern int sender_keeps_checksum;
23 extern int trust_sender_filter;
24 extern int unsort_ndx;
25 +extern unsigned long sleep_asec;
27 extern struct stats stats;
28 extern char *filesfrom_host;
29 @@ -1877,6 +1878,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
32 send_file_name(f, flist, fbuf, NULL, flags, filter_level);
33 + /* Sleep for a bit, to avoid hammering the disk. */
39 diff --git a/options.c b/options.c
42 @@ -122,6 +122,7 @@ int size_only = 0;
43 int daemon_bwlimit = 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 @@ -773,6 +774,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
61 @@ -486,6 +486,7 @@ has its own detailed description later in this manpage.
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 --fsync fsync every written file