From 6688d5fca0f5d19ff7741b2d1585882c4663541b Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Sun, 18 Nov 2018 19:55:08 +0100 Subject: [PATCH] [Linux] read_sysfs() fails on Linux 4.18+ Linux kernel 4.18+ added 4 fields to /sys/block/$dev/stat, ignore them and parse the rest as usual. --- psutil/_pslinux.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/psutil/_pslinux.py b/psutil/_pslinux.py index b775d39ae..12f17e861 100644 --- a/psutil/_pslinux.py +++ b/psutil/_pslinux.py @@ -1099,8 +1099,13 @@ def read_sysfs(): with open_text(os.path.join(root, 'stat')) as f: fields = f.read().strip().split() name = os.path.basename(root) - (reads, reads_merged, rbytes, rtime, writes, writes_merged, - wbytes, wtime, _, busy_time, _) = map(int, fields) + if len(fields) == 11: + (reads, reads_merged, rbytes, rtime, writes, writes_merged, + wbytes, wtime, _, busy_time, _) = map(int, fields) + else: # Linux 4.18+ adds for fields for discard + (reads, reads_merged, rbytes, rtime, writes, writes_merged, + wbytes, wtime, _, busy_time, _, _, _, _, _) = map(int, + fields) yield (name, reads, writes, rbytes, wbytes, rtime, wtime, reads_merged, writes_merged, busy_time)