From 857d338d0312d4bae0e60646bfc8000b60679ce3 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 15:30:17 +0200 Subject: [PATCH] added user config - trigger script from udev rule --- .SRCINFO | 12 ++++++++---- 99-usb-sync.rules | 4 +++- PKGBUILD | 18 ++++++++++++------ udev-usb-sync.conf | 5 +++++ udev-usb-sync.sh | 26 ++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 11 deletions(-) create mode 100644 udev-usb-sync.conf create mode 100755 udev-usb-sync.sh diff --git a/.SRCINFO b/.SRCINFO index 2d52336..2d4ad79 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,13 +1,17 @@ pkgbase = udev-usb-sync - pkgdesc = Finetune write cache when USB storage device is plugged - pkgver = 0.2 - pkgrel = 2 + pkgdesc = Fine tune write cache when USB storage device is plugged + pkgver = 0.3 + pkgrel = 1 url = https://codeberg.org/wonky/udev-usb-sync arch = any license = MIT depends = hdparm provides = udev-usb-sync source = 99-usb-sync.rules - sha256sums = cc300e97e3ea8b0bf6fa46fa93bef9cc42218676955cb3b7fa7e2706d76cf9db + source = udev-usb-sync.sh + source = udev-usb-sync.conf + sha256sums = 6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035 + sha256sums = 4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324 + sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules index 4714f86..c47f9d1 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -7,4 +7,6 @@ ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bi # 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-ratio # https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class-bdi-bdi-max-bytes -ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/echo 1 > /sys/block/%k/bdi/strict_limit", RUN+="/usr/bin/echo 50 > /sys/block/%k/bdi/max_ratio", RUN+="/usr/bin/echo 16777216 > /sys/block/%k/bdi/max_bytes" +# implemented using /usr/bin/udev-usb-tweak.sh +# optional configuration in /etc/udev-usb-tweak/udev-usb-tweak.sh +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+=/usr/bin/udev-usb-tweak.sh %k" diff --git a/PKGBUILD b/PKGBUILD index 7a38c56..e423680 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,17 +1,23 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.2 -pkgrel=2 -pkgdesc='Finetune write cache when USB storage device is plugged' +pkgver=0.3 +pkgrel=1 +pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' license=('MIT') depends=('hdparm') provides=("${pkgname}") -source=('99-usb-sync.rules') -sha256sums=('cc300e97e3ea8b0bf6fa46fa93bef9cc42218676955cb3b7fa7e2706d76cf9db') +source=('99-usb-sync.rules' 'udev-usb-sync.sh' 'udev-usb-sync.conf') +sha256sums=('6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035' + '4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324' + 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') package() { install -d -m755 $pkgdir/etc/udev/rules.d - cp ${startdir}/99-usb-sync.rules "${pkgdir}/etc/udev/rules.d" + install -d -m755 $pkgdir/etc/$pkgname + install -d -m755 $pkgdir/usr/bin + cp ${srcdir}/99-usb-sync.rules "${pkgdir}/etc/udev/rules.d" + cp ${srcdir}/${pkgname}.sh "${pkgdir}/usr/bin" + cp ${srcdir}/${pkgname}.conf "${pkgdir}/etc/${pkgname}" } diff --git a/udev-usb-sync.conf b/udev-usb-sync.conf new file mode 100644 index 0000000..31683ee --- /dev/null +++ b/udev-usb-sync.conf @@ -0,0 +1,5 @@ +# default values +#use_tweaks=1 +#max_bytes=16777216 +#max_ratio=50 +#strict_limit=1 diff --git a/udev-usb-sync.sh b/udev-usb-sync.sh new file mode 100755 index 0000000..54c51f7 --- /dev/null +++ b/udev-usb-sync.sh @@ -0,0 +1,26 @@ +#!/usr/bin/bash +# +# script to tweak USB storage device filesystem sync +# +# soures /etc/tweak-usb/tweaks.conf +# + +use_tweaks=1 +max_bytes=16777216 +max_ration=50 +strict_limit=1 + +# read user config +source /etc/tweak-usb/tweaks.conf + +if [[ "$use_tweaks" = 0 ]]; then + exit 0 +fi + +if [[ -z "$1" ]]; then + exit 1 +fi + +echo "$max_bytes" > "/dev/block/$1/bdi/max_bytes" +echo "$max_ration" > "/dev/block/$1/bdi/max_ratio" +echo "$strict_limit" > "/dev/block/$1/bdi/strict_limit"