specifying a maximum disk I/O rate (and have that affect a maximum stat()
rate or something like that).
+To use this patch, run these commands for a successful build:
+
+ patch -p1 <patches/slow-down.diff
+ ./configure (optional if already run)
+ make
+
--- old/flist.c
+++ new/flist.c
@@ -58,6 +58,7 @@ extern int copy_links;
extern int protocol_version;
extern int sanitize_paths;
+extern unsigned long sleep_asec;
- extern const char *io_write_phase;
extern struct stats stats;
- extern struct file_list *the_file_list;
-@@ -1049,6 +1050,9 @@ static void send_directory(int f, struct
+
+ extern char curr_dir[MAXPATHLEN];
+@@ -1246,6 +1247,9 @@ static void send_directory(int f, struct
}
- send_file_name(f, flist, fbuf, NULL, 0);
+ send_file_name(f, flist, fbuf, NULL, flags, filter_flags);
+ /* Sleep for a bit, to avoid hammering the disk. */
+ if (sleep_asec)
+ usleep(sleep_asec);
size_t bwlimit_writemax = 0;
int ignore_existing = 0;
int ignore_non_existing = 0;
-@@ -364,6 +365,7 @@ void usage(enum logcode F)
- rprintf(F," --password-file=FILE read password from FILE\n");
+@@ -374,6 +375,7 @@ void usage(enum logcode F)
+ rprintf(F," --password-file=FILE read daemon-access password from FILE\n");
rprintf(F," --list-only list the files instead of copying them\n");
rprintf(F," --bwlimit=KBPS limit I/O bandwidth; KBytes per second\n");
+ rprintf(F," --slow-down=USECs sleep N usec while creating the filelist\n");
rprintf(F," --write-batch=FILE write a batched update to FILE\n");
rprintf(F," --only-write-batch=FILE like --write-batch but w/o updating destination\n");
rprintf(F," --read-batch=FILE read a batched update from FILE\n");
-@@ -492,6 +494,7 @@ static struct poptOption long_options[]
- {"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
+@@ -514,6 +516,7 @@ static struct poptOption long_options[]
+ {"log-format", 0, POPT_ARG_STRING, &stdout_format, 0, 0, 0 }, /* DEPRECATED */
{"itemize-changes", 'i', POPT_ARG_NONE, 0, 'i', 0, 0 },
{"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 },
+ {"slow-down", 0, POPT_ARG_LONG, &sleep_asec, 0, 0, 0 },