Package: byobu
Version: 5.133-1
Severity: normal
File: /usr/lib/byobu/disk_io
Tags: patch
Dear Maintainer,
Since upgrading to bullseye, the disk_io status notification fails to show
instantaneous statistics, and shows instead a persistent cumulative total of
all I/O.
The problem is due to the interaction between lines 65 and 75:
65> [ -r "$cache" ] && read x1 < "$cache" || x1=0
75> printf "%s" "$x2" > "$cache"
Because the $cache file is written without a terminating newline, the read
builtin returns failure, causing the || operator to execute x1=0.
According to sh(1):
> The read builtin will indicate success unless
> EOF is encountered on input, in which case failure is returned.
A further problem is that when the I/O rate is below the $DISK_IO_THRESHOLD,
the previous statistics remain visible and are not cleared from the status
line.
The attached patch corrects these problems.
-- System Information:
Debian Release: 11.0
APT prefers stable-security
APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 5.10.0-8-amd64 (SMP w/2 CPU threads)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages byobu depends on:
ii debconf [debconf-2.0] 1.5.77
ii gawk 1:5.1.0-1
ii gettext-base 0.21-4
ii iproute2 5.10.0-4
ii python3 3.9.2-3
ii python3-newt 0.52.21-4+b3
ii tmux 3.1c-1
Versions of packages byobu recommends:
ii less 551-2
pn pastebinit <none>
pn run-one <none>
ii sensible-utils 0.0.14
Versions of packages byobu suggests:
pn apport <none>
pn ccze <none>
ii gnupg 2.2.27-2
ii lsb-release 11.1.0
ii po-debconf 1.0.21+nmu1
pn screen <none>
pn speedometer <none>
pn ttf-ubuntu-font-family <none>
pn update-notifier-common <none>
ii vim 2:8.2.2434-3
pn wireless-tools <none>
ii xterm 366-1
-- debconf information excluded
--- /usr/lib/byobu/disk_io 2020-02-17 06:11:50.000000000 -0800
+++ .byobu/bin/disk_io 2021-08-25 14:24:57.322324975 -0700
@@ -72,11 +72,12 @@
symbol="$ICON_WR"
[ -n "$a7" ] && x2="$a7" || x2=0
fi
- printf "%s" "$x2" > "$cache"
+ printf "%s\n" "$x2" > "$cache"
rate=$((($x2 - $x1) / ($t2 - $t1) * 512 / 1024))
if [ $rate -lt $DISK_IO_THRESHOLD ]; then
# Below threshold, don't print
- continue
+ #continue
+ rate=""
elif [ "$rate" -lt 0 ]; then
rate=0
elif [ "$rate" -gt 1048576 ]; then