]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_mdrestore: correctly account bytes read
authorDave Chinner <dchinner@redhat.com>
Tue, 9 Feb 2016 00:09:43 +0000 (11:09 +1100)
committerDave Chinner <david@fromorbit.com>
Tue, 9 Feb 2016 00:09:43 +0000 (11:09 +1100)
Progess indication comes in the form of a "X MB read" output. This
doesn't match up with the actual number of bytes read from the
metadump file because it only accounts header blocks in the file,
not actual metadata blocks that are restored, Hence the number
reported is usually much lower than the size of the metadump file,
hence it's impossible to use to gauge progress of the restore.

While there, fix the progress output so that it overwrites the
previous progress output line correctly.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
mdrestore/xfs_mdrestore.c

index ebc5e544df74db39b2f5ecaf39da682d7374afd8..70a160c4cb58f1a7233b4f18ddc57a29665efdf6 100644 (file)
@@ -133,7 +133,7 @@ perform_restore(
 
        for (;;) {
                if (show_progress && (bytes_read & ((1 << 20) - 1)) == 0)
-                       print_progress("%lld MB read\n", bytes_read >> 20);
+                       print_progress("%lld MB read", bytes_read >> 20);
 
                for (cur_index = 0; cur_index < mb_count; cur_index++) {
                        if (pwrite64(dst_fd, &block_buffer[cur_index <<
@@ -160,7 +160,7 @@ perform_restore(
                                                                1, src_f) != 1)
                        fatal("error reading from file: %s\n", strerror(errno));
 
-               bytes_read += block_size;
+               bytes_read += block_size + (mb_count << tmb.mb_blocklog);
        }
 
        if (progress_since_warning)