update with config and script

This commit is contained in:
Frede Hundewadt 2023-08-29 16:25:04 +02:00
parent eab2abcb4a
commit 45d7307d1d
5 changed files with 61 additions and 9 deletions

View file

@ -1,10 +1,12 @@
# rule to disable write cache for usb storage
# requires hdparm to be installed
ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/hdparm -W 0 /dev/%K"
ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/hdparm -W 0 /dev/%k"
#
# rules to impose buffer limits on USB devices
# requires kernel > 6.1
# 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-sync.sh %k"

View file

@ -1,17 +1,25 @@
# Maintainer:
# Maintainer: root.nix.dk
pkgname='udev-usb-sync'
pkgver=0.1
pkgrel=1
pkgdesc='Disable writecache when USB storage device is plugged'
pkgver=0.3
pkgrel=6
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=('ed0253bbbd5b64529efd752978ba17176e3ff23d3f7f220bbacd3fa3a3691df9')
backup=("etc/${pkgname}/${pkgname}.conf")
install=${pkgname}.install
source=('99-usb-sync.rules' 'udev-usb-sync.sh' 'udev-usb-sync.conf')
sha256sums=('39e714df856c8d47fe14365b854b9a1b36ed3afa300383d8329452394a01a1c4'
'2669e043722b33009798c8c30f48414e1eaad0f001631587f502b19a2f11feb7'
'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}"
}

5
udev-usb-sync.conf Normal file
View file

@ -0,0 +1,5 @@
# default values
#use_tweaks=1
#max_bytes=16777216
#max_ratio=50
#strict_limit=1

11
udev-usb-sync.install Normal file
View file

@ -0,0 +1,11 @@
post_install() {
udevadm control --reload
}
post_upgrade() {
post_install
}
post_remove() {
post_install
}

26
udev-usb-sync.sh Executable file
View file

@ -0,0 +1,26 @@
#!/usr/bin/bash
#
# script to tweak USB storage device filesystem sync
#
# sources /etc/usb-dev-sync/usb-dev-sync.conf
#
use_tweaks=1
max_bytes=16777216
max_ration=50
strict_limit=1
# read user config
source /etc/udev-usb-sync/udev-usb-sync.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"