Previously 'read' and 'write' would always show the same value, which is
of little use. Change it so 'write' excludes reused bytes, thus
displaying the actual upload speed.
$last_reused needs to be initialized to contain reused data from 'clean'
dirty bitmaps to ensure the first output line is correct.
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
my $starttime = time ();
my $last_time = $starttime;
my $starttime = time ();
my $last_time = $starttime;
- my ($last_percent, $last_total, $last_target, $last_zero, $last_transferred) = (-1, 0, 0, 0, 0);
+ my ($last_percent, $last_total, $last_target, $last_zero, $last_transferred) = (-1, 0, 0, 0, 0);
my ($transferred, $reused);
my $get_mbps = sub {
my ($transferred, $reused);
my $get_mbps = sub {
my $has_query_bitmap = 0;
if (defined($pbs_features) && $pbs_features->{'query-bitmap-info'}) {
$has_query_bitmap = 1;
my $has_query_bitmap = 0;
if (defined($pbs_features) && $pbs_features->{'query-bitmap-info'}) {
$has_query_bitmap = 1;
$drive =~ s/^drive-//; # for consistency
$self->loginfo("$drive: $text");
$target += $info->{dirty};
$drive =~ s/^drive-//; # for consistency
$self->loginfo("$drive: $text");
$target += $info->{dirty};
+ $last_reused += $info->{size} - $info->{dirty};
my $duration = $ctime - $starttime;
my $rbytes = $transferred - $last_transferred;
my $duration = $ctime - $starttime;
my $rbytes = $transferred - $last_transferred;
- my $wbytes = $rbytes - ($zero - $last_zero);
+ my $wbytes;
+ if ($reused) {
+ # reused includes zero bytes for PBS
+ $wbytes = $rbytes - ($reused - $last_reused);
+ } else {
+ $wbytes = $rbytes - ($zero - $last_zero);
+ }
my $timediff = ($ctime - $last_time) || 1; # fixme
my $mbps_read = $get_mbps->($rbytes, $timediff);
my $timediff = ($ctime - $last_time) || 1; # fixme
my $mbps_read = $get_mbps->($rbytes, $timediff);
$last_zero = $zero if $zero;
$last_transferred = $transferred if $transferred;
$last_time = $ctime;
$last_zero = $zero if $zero;
$last_transferred = $transferred if $transferred;
$last_time = $ctime;
+ $last_reused = $reused;