From c1c3d92192bd0daa64cce4ae944321716b31ba38 Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Tue, 9 Feb 2016 11:09:43 +1100 Subject: [PATCH] xfs_mdrestore: correctly account bytes read 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 Reviewed-by: Brian Foster Reviewed-by: Christoph Hellwig Signed-off-by: Dave Chinner --- mdrestore/xfs_mdrestore.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c index ebc5e544d..70a160c4c 100644 --- a/mdrestore/xfs_mdrestore.c +++ b/mdrestore/xfs_mdrestore.c @@ -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) -- 2.47.2