From 9c994f882a359ce0283335bf8fd951772f35b60d Mon Sep 17 00:00:00 2001 From: Bo Chen Date: Mon, 11 Sep 2023 11:34:54 -0700 Subject: [PATCH] virtio-devices: block: Fix the latency counter for max read/write See: #5712 Signed-off-by: Bo Chen --- virtio-devices/src/block.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/virtio-devices/src/block.rs b/virtio-devices/src/block.rs index a9557b1a0..5d7f89298 100644 --- a/virtio-devices/src/block.rs +++ b/virtio-devices/src/block.rs @@ -283,6 +283,8 @@ impl BlockEpollHandler { let latency = request.start.elapsed().as_micros() as u64; let read_ops_last = self.counters.read_ops.load(Ordering::Relaxed); let write_ops_last = self.counters.write_ops.load(Ordering::Relaxed); + let read_max = self.counters.read_latency_max.load(Ordering::Relaxed); + let write_max = self.counters.write_latency_max.load(Ordering::Relaxed); let mut read_avg = self.counters.read_latency_avg.load(Ordering::Relaxed); let mut write_avg = self.counters.write_latency_avg.load(Ordering::Relaxed); let (status, len) = if result >= 0 { @@ -297,9 +299,7 @@ impl BlockEpollHandler { .read_latency_min .store(latency, Ordering::Relaxed); } - if latency > self.counters.read_latency_max.load(Ordering::Relaxed) - || latency == u64::MAX - { + if latency > read_max || read_max == u64::MAX { self.counters .read_latency_max .store(latency, Ordering::Relaxed); @@ -331,9 +331,7 @@ impl BlockEpollHandler { .write_latency_min .store(latency, Ordering::Relaxed); } - if latency > self.counters.write_latency_max.load(Ordering::Relaxed) - || latency == u64::MAX - { + if latency > write_max || write_max == u64::MAX { self.counters .write_latency_max .store(latency, Ordering::Relaxed);