Skip to content

Commit 740955e

Browse files
committed
btrfs: reduce atomic reads where possible in btrfs_device_read_latency
Signed-off-by: Kai Krakow <[email protected]>
1 parent e905c0c commit 740955e

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

fs/btrfs/volumes.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6019,18 +6019,20 @@ static u64 btrfs_device_read_latency(struct btrfs_device *device)
60196019
u64 avg_wait = 0;
60206020

60216021
if (likely(device->bdev)) {
6022-
u64 read_wait = part_stat_read(device->bdev, nsecs[READ]);
6023-
u64 last_nsecs_read = (u64)atomic64_read(&device->last_nsecs_read);
6024-
unsigned long read_ios = part_stat_read(device->bdev, ios[READ]);
6025-
unsigned long last_ios_read = (unsigned long)atomic64_read(&device->last_ios_read);
60266022
u64 last_io_age = (u64)atomic64_read(&device->last_io_age);
60276023

6028-
s64 delta_read_wait = read_wait - last_nsecs_read;
6029-
s64 delta_read_ios = read_ios - last_ios_read;
6024+
if (likely(last_io_age >= 0 && last_io_age < BTRFS_DEVICE_LATENCY_CHECKPOINT_AGE)) {
6025+
u64 read_wait = part_stat_read(device->bdev, nsecs[READ]);
6026+
u64 last_nsecs_read = (u64)atomic64_read(&device->last_nsecs_read);
6027+
unsigned long read_ios = part_stat_read(device->bdev, ios[READ]);
6028+
unsigned long last_ios_read = (unsigned long)atomic64_read(&device->last_ios_read);
60306029

6031-
if (last_io_age >= 0 && last_io_age < BTRFS_DEVICE_LATENCY_CHECKPOINT_AGE
6032-
&& delta_read_wait > 0 && delta_read_ios > 0 && delta_read_wait >= delta_read_ios)
6033-
avg_wait = div_u64(delta_read_wait, delta_read_ios);
6030+
s64 delta_read_wait = read_wait - last_nsecs_read;
6031+
s64 delta_read_ios = read_ios - last_ios_read;
6032+
6033+
if (delta_read_wait > 0 && delta_read_ios > 0 && delta_read_wait >= delta_read_ios)
6034+
avg_wait = div_u64(delta_read_wait, delta_read_ios);
6035+
}
60346036
}
60356037

60366038
return avg_wait;

0 commit comments

Comments
 (0)