From 1fe2ddca751bb1042d6a8e447604ba16879773f5 Mon Sep 17 00:00:00 2001 From: Frede H Date: Fri, 13 Sep 2024 15:07:11 +0200 Subject: [PATCH] Added kernel minor to the factor Only kernels above 6.1 supports strict_limit and max_bytes --- PKGBUILD | 4 ++-- udev-usb-sync | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index 24cfbc8..4522c14 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.9 -pkgrel=3 +pkgver=0.10 +pkgrel=1 pkgdesc='Fine tune write cache and impose buffer limits when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' diff --git a/udev-usb-sync b/udev-usb-sync index 46a1df2..2987613 100755 --- a/udev-usb-sync +++ b/udev-usb-sync @@ -42,21 +42,23 @@ CONFIG='/etc/udev-usb-sync/udev-usb-sync.conf' BLOCKDEVICE="$1" SPEED="$2" KERNEL_MAJOR_VERSION=$(uname -r | awk -F'.' '{print $1}') +KERNEL_MINOR_VERSION=$(uname -r | awk -F'.' '{print $2}') # disable write cache for device if possible -[[ -n $(which hdparm) ]] && $(which hdparm) -W 0 /dev/$BLOCKDEVICE +[[ -n $(which hdparm) ]] && $(which hdparm) -W 0 /dev/$BLOCKDEVICE > /dev/null -if [[ $KERNEL_MAJOR_VERSION -le 5 ]]; then +if [[ $KERNEL_MAJOR_VERSION -le 6 ]]; then # the following rules is introduced with kernel 2.6 # https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class-bdi-bdi-max-ratio - # 1% of available RAM -> 8046522kB -> 80.465kB -> 80MB echo 1 > /sys/block/$BLOCKDEVICE/bdi/max_ratio -elif [[ $KERNEL_MAJOR_VERSION -ge 6 ]]; then - # the following rules is introduced with kernel 6.1 +elif [[ $KERNEL_MAJOR_VERSION -ge 6 ]] && [[ $KERNEL_MINOR_VERSION -ge 2 ]]; then + # the following rules is introduced with kernel 6.2 # https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class-bdi-bdi-strict-limit # https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class-bdi-bdi-max-bytes + # Turning strictlimit on has no visible effect if max_ratio is equal to 100%. + echo 50 > /sys/block/$BLOCKDEVICE/bdi/max_ratio # apply strict limit echo 1 > /sys/block/$BLOCKDEVICE/bdi/strict_limit