]> git.ipfire.org Git - thirdparty/rsync.git/commitdiff
Fix --info=progress2 info as a file is transferred.
authorWayne Davison <wayned@samba.org>
Mon, 24 Feb 2014 17:49:04 +0000 (09:49 -0800)
committerWayne Davison <wayned@samba.org>
Mon, 24 Feb 2014 18:07:18 +0000 (10:07 -0800)
Applying Anish Shankar's patch to fix speed and stats of files as they
are transferred.  Fixes bug 10450.

NEWS
progress.c

diff --git a/NEWS b/NEWS
index dc1df7811eb4dd9e8fb62c036e92e073b8484870..e1f5412d0b086fd1cd8dfd7524b0efe3f12a3854 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -31,6 +31,11 @@ Changes since 3.1.0:
     - Fixed a bug that caused a failure when combining --delete-missing-args
       with --xattrs and/or --acls.
 
+    - Fixed a problem with --info=progress2's output stats where rsync would
+      only update the stats at the end of each file's transfer.  It now uses
+      the data that is flowing for the current file, making the stats more
+      accurate and less jumpy.
+
     - Fixed an itemize bug that affected the combo of --link-dest, -X, and -n.
 
     - Fixed a problem with delete messages not appearing in the log file when
index 8fade9c1bb23587b99aa04d8f0765a34d95e4f2e..318a77f0b26e57341228a4b5e6f5303421e796ef 100644 (file)
@@ -177,6 +177,11 @@ void show_progress(OFF_T ofs, OFF_T size)
 
        gettimeofday(&now, NULL);
 
+       if (INFO_GTE(PROGRESS, 2)) {
+               ofs = stats.total_transferred_size - size + ofs;
+               size = stats.total_size;
+       }
+
        if (!ph_start.time.tv_sec) {
                int i;
 
@@ -212,9 +217,5 @@ void show_progress(OFF_T ofs, OFF_T size)
                return;
 #endif
 
-       if (INFO_GTE(PROGRESS, 2)) {
-               rprint_progress(stats.total_transferred_size,
-                               stats.total_size, &now, False);
-       } else
-               rprint_progress(ofs, size, &now, False);
+       rprint_progress(ofs, size, &now, False);
 }