From 28459b2d925412b944fd4f9dfd8a722c7dc067dc Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Sat, 4 Mar 2023 17:38:36 +0100 Subject: [PATCH 01/23] initial commit --- .SRCINFO | 13 +++++++++++++ 99-usb-sync.rules | 3 +++ PKGBUILD | 17 +++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 .SRCINFO create mode 100644 99-usb-sync.rules create mode 100644 PKGBUILD diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..6bd1922 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,13 @@ +pkgbase = udev-usb-sync + pkgdesc = Disable writecache when USB storage device is plugged + pkgver = 0.1 + 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 = ed0253bbbd5b64529efd752978ba17176e3ff23d3f7f220bbacd3fa3a3691df9 + +pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules new file mode 100644 index 0000000..8c4369e --- /dev/null +++ b/99-usb-sync.rules @@ -0,0 +1,3 @@ +# 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" diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..01e1ba3 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,17 @@ +# Maintainer: +pkgname='udev-usb-sync' +pkgver=0.1 +pkgrel=1 +pkgdesc='Disable writecache 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') + +package() { + install -d -m755 $pkgdir/etc/udev/rules.d + cp ${startdir}/99-usb-sync.rules "${pkgdir}/etc/udev/rules.d" +} From 5ce3f85b29f933228761e95bf9cf42c84ee0b79f Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Fri, 21 Jul 2023 11:03:06 +0200 Subject: [PATCH 02/23] update with rules for kernel >= 6.2 --- 99-usb-sync.rules | 10 +++++++++- PKGBUILD | 8 ++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/99-usb-sync.rules b/99-usb-sync.rules index 8c4369e..e8d98f6 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -1,3 +1,11 @@ -# rule to disable write cache for usb storage +# +# rule to disable write cache for usb storage that supports write-cache command # 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" +# +# 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-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" + diff --git a/PKGBUILD b/PKGBUILD index 01e1ba3..10102c9 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,15 +1,15 @@ -# Maintainer: +# Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.1 -pkgrel=1 -pkgdesc='Disable writecache when USB storage device is plugged' +pkgrel=2 +pkgdesc='Finetune writecache 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') +sha256sums=('012b9991a9eee3149eb27e8d3c7b4d40b56bbfe2030ce84823a90c968410f8d0') package() { install -d -m755 $pkgdir/etc/udev/rules.d From 1400ba10e7404b7bbf224df08c7750f6e79bef4a Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Sat, 22 Jul 2023 15:23:12 +0200 Subject: [PATCH 03/23] update .SRCINFO --- .SRCINFO | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 6bd1922..05f6bdc 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,13 +1,13 @@ pkgbase = udev-usb-sync - pkgdesc = Disable writecache when USB storage device is plugged + pkgdesc = Finetune writecache when USB storage device is plugged pkgver = 0.1 - pkgrel = 1 + pkgrel = 2 url = https://codeberg.org/wonky/udev-usb-sync arch = any license = MIT depends = hdparm provides = udev-usb-sync source = 99-usb-sync.rules - sha256sums = ed0253bbbd5b64529efd752978ba17176e3ff23d3f7f220bbacd3fa3a3691df9 + sha256sums = 012b9991a9eee3149eb27e8d3c7b4d40b56bbfe2030ce84823a90c968410f8d0 pkgname = udev-usb-sync From 48f1a4b0810684aa70d6c7d88fe5c965a6b859fe Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 12:41:21 +0200 Subject: [PATCH 04/23] device variable is %K not %k --- .SRCINFO | 8 ++++---- 99-usb-sync.rules | 12 ++++++------ PKGBUILD | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 05f6bdc..42f94d1 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,13 +1,13 @@ pkgbase = udev-usb-sync - pkgdesc = Finetune writecache when USB storage device is plugged - pkgver = 0.1 - pkgrel = 2 + pkgdesc = Finetune write cache when USB storage device is plugged + pkgver = 0.2 + 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 = 012b9991a9eee3149eb27e8d3c7b4d40b56bbfe2030ce84823a90c968410f8d0 + sha256sums = d6cb851a9be886a5f36414e872e3176983fbc5aa428af41a07f5b54bfb53d764 pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules index e8d98f6..b377f0b 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -1,11 +1,11 @@ -# -# rule to disable write cache for usb storage that supports write-cache command +# 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+="[[ $(uname -r | awk -F'.' '{print $1 $2}') < 62 ]] && [[ $(which hdparm) =~ (hdparm) ]] && /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" # -# the following rules is introduced with kernel 6.2 +# 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" - +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" diff --git a/PKGBUILD b/PKGBUILD index 10102c9..b2b260b 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,15 +1,15 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.1 -pkgrel=2 -pkgdesc='Finetune writecache when USB storage device is plugged' +pkgver=0.2 +pkgrel=1 +pkgdesc='Finetune 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=('012b9991a9eee3149eb27e8d3c7b4d40b56bbfe2030ce84823a90c968410f8d0') +sha256sums=('d6cb851a9be886a5f36414e872e3176983fbc5aa428af41a07f5b54bfb53d764') package() { install -d -m755 $pkgdir/etc/udev/rules.d From 8769c79d946527b24b07f2958ee83787f9b9fa79 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 13:21:41 +0200 Subject: [PATCH 05/23] revert %K to %k `man udev` -> $kernel, %k - The kerel name for this device --- .SRCINFO | 2 +- PKGBUILD | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 42f94d1..76195e1 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = udev-usb-sync pkgdesc = Finetune write cache when USB storage device is plugged pkgver = 0.2 - pkgrel = 1 + pkgrel = 2 url = https://codeberg.org/wonky/udev-usb-sync arch = any license = MIT diff --git a/PKGBUILD b/PKGBUILD index b2b260b..b2c8695 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.2 -pkgrel=1 +pkgrel=2 pkgdesc='Finetune write cache when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' From 8dead6406cb752c1631fcc19e0658083dbc8e22e Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 13:25:17 +0200 Subject: [PATCH 06/23] revert %K to %k `man udev` -> $kernel, %k - The kerel name for this device --- .SRCINFO | 13 ------------- 99-usb-sync.rules | 5 ++--- PKGBUILD | 2 +- 3 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 .SRCINFO diff --git a/.SRCINFO b/.SRCINFO deleted file mode 100644 index 76195e1..0000000 --- a/.SRCINFO +++ /dev/null @@ -1,13 +0,0 @@ -pkgbase = udev-usb-sync - pkgdesc = Finetune write cache when USB storage device is plugged - pkgver = 0.2 - pkgrel = 2 - url = https://codeberg.org/wonky/udev-usb-sync - arch = any - license = MIT - depends = hdparm - provides = udev-usb-sync - source = 99-usb-sync.rules - sha256sums = d6cb851a9be886a5f36414e872e3176983fbc5aa428af41a07f5b54bfb53d764 - -pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules index b377f0b..4714f86 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -1,11 +1,10 @@ # 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+="[[ $(uname -r | awk -F'.' '{print $1 $2}') < 62 ]] && [[ $(which hdparm) =~ (hdparm) ]] && /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" +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" +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" diff --git a/PKGBUILD b/PKGBUILD index b2c8695..7a38c56 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -9,7 +9,7 @@ license=('MIT') depends=('hdparm') provides=("${pkgname}") source=('99-usb-sync.rules') -sha256sums=('d6cb851a9be886a5f36414e872e3176983fbc5aa428af41a07f5b54bfb53d764') +sha256sums=('cc300e97e3ea8b0bf6fa46fa93bef9cc42218676955cb3b7fa7e2706d76cf9db') package() { install -d -m755 $pkgdir/etc/udev/rules.d From a7c6154c4c0d983a1bb11b3e2a7866a63f572906 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 13:25:56 +0200 Subject: [PATCH 07/23] revert %K to %k `man udev` -> $kernel, %k - The kerel name for this device --- .SRCINFO | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .SRCINFO diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..2d52336 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,13 @@ +pkgbase = udev-usb-sync + pkgdesc = Finetune write cache when USB storage device is plugged + pkgver = 0.2 + pkgrel = 2 + 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 + +pkgname = udev-usb-sync From 857d338d0312d4bae0e60646bfc8000b60679ce3 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 15:30:17 +0200 Subject: [PATCH 08/23] 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" From 2ef9cbb9f081ff287d3d4343b800a8a1e02abb8f Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 15:38:29 +0200 Subject: [PATCH 09/23] added .install --- .SRCINFO | 17 ----------------- PKGBUILD | 3 ++- 2 files changed, 2 insertions(+), 18 deletions(-) delete mode 100644 .SRCINFO diff --git a/.SRCINFO b/.SRCINFO deleted file mode 100644 index 2d4ad79..0000000 --- a/.SRCINFO +++ /dev/null @@ -1,17 +0,0 @@ -pkgbase = udev-usb-sync - 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 - source = udev-usb-sync.sh - source = udev-usb-sync.conf - sha256sums = 6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035 - sha256sums = 4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324 - sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 - -pkgname = udev-usb-sync diff --git a/PKGBUILD b/PKGBUILD index e423680..2e1ad43 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,13 +1,14 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.3 -pkgrel=1 +pkgrel=2 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}") +install=${pkgname}.install source=('99-usb-sync.rules' 'udev-usb-sync.sh' 'udev-usb-sync.conf') sha256sums=('6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035' '4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324' From 46743f8a21bb0a897cb6c6fd1be26d3cd6b44e09 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 15:39:37 +0200 Subject: [PATCH 10/23] updated install --- .SCRINFO | 18 ++++++++++++++++++ udev-usb-sync.install | 11 +++++++++++ 2 files changed, 29 insertions(+) create mode 100644 .SCRINFO create mode 100644 udev-usb-sync.install diff --git a/.SCRINFO b/.SCRINFO new file mode 100644 index 0000000..ed3fb56 --- /dev/null +++ b/.SCRINFO @@ -0,0 +1,18 @@ +pkgbase = udev-usb-sync + pkgdesc = Fine tune write cache when USB storage device is plugged + pkgver = 0.3 + pkgrel = 1 + url = https://codeberg.org/wonky/udev-usb-sync + install = udev-usb-sync.install + arch = any + license = MIT + depends = hdparm + provides = udev-usb-sync + source = 99-usb-sync.rules + source = udev-usb-sync.sh + source = udev-usb-sync.conf + sha256sums = 6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035 + sha256sums = 4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324 + sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 + +pkgname = udev-usb-sync diff --git a/udev-usb-sync.install b/udev-usb-sync.install new file mode 100644 index 0000000..7b7452a --- /dev/null +++ b/udev-usb-sync.install @@ -0,0 +1,11 @@ +post_install() { + udevadm control --reload +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} From 05dac8106877415ecf7c40bf4e819fd6552119e3 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 15:41:10 +0200 Subject: [PATCH 11/23] fix .SRCINFO --- .SCRINFO => .SRCINFO | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .SCRINFO => .SRCINFO (100%) diff --git a/.SCRINFO b/.SRCINFO similarity index 100% rename from .SCRINFO rename to .SRCINFO From 36a36bc2fb2f6d1db3e12d5bb2fe3bb4a4341075 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 16:03:22 +0200 Subject: [PATCH 12/23] update install to backup config --- .SRCINFO | 3 ++- PKGBUILD | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index ed3fb56..cfb69cb 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,13 +1,14 @@ pkgbase = udev-usb-sync pkgdesc = Fine tune write cache when USB storage device is plugged pkgver = 0.3 - pkgrel = 1 + pkgrel = 3 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install arch = any license = MIT depends = hdparm provides = udev-usb-sync + backup = etc/udev-usb-sync/udev-usb-sync.conf source = 99-usb-sync.rules source = udev-usb-sync.sh source = udev-usb-sync.conf diff --git a/PKGBUILD b/PKGBUILD index 2e1ad43..4abcb46 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,13 +1,14 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.3 -pkgrel=2 +pkgrel=3 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}") +backup=("etc/${pkgname}/${pkgname}.conf") install=${pkgname}.install source=('99-usb-sync.rules' 'udev-usb-sync.sh' 'udev-usb-sync.conf') sha256sums=('6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035' From 8e3f2a561e1002a41adaf3bb5bf660ea4d826dd7 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 16:07:29 +0200 Subject: [PATCH 13/23] fix error in rules file --- .SRCINFO | 4 ++-- 99-usb-sync.rules | 2 +- PKGBUILD | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index cfb69cb..877111f 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = udev-usb-sync pkgdesc = Fine tune write cache when USB storage device is plugged pkgver = 0.3 - pkgrel = 3 + pkgrel = 4 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install arch = any @@ -12,7 +12,7 @@ pkgbase = udev-usb-sync source = 99-usb-sync.rules source = udev-usb-sync.sh source = udev-usb-sync.conf - sha256sums = 6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035 + sha256sums = 39e714df856c8d47fe14365b854b9a1b36ed3afa300383d8329452394a01a1c4 sha256sums = 4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324 sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 diff --git a/99-usb-sync.rules b/99-usb-sync.rules index c47f9d1..b1d8fb4 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -9,4 +9,4 @@ 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-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" +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+=/usr/bin/udev-usb-sync.sh %k" diff --git a/PKGBUILD b/PKGBUILD index 4abcb46..7484e0d 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.3 -pkgrel=3 +pkgrel=4 pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' @@ -11,7 +11,7 @@ provides=("${pkgname}") backup=("etc/${pkgname}/${pkgname}.conf") install=${pkgname}.install source=('99-usb-sync.rules' 'udev-usb-sync.sh' 'udev-usb-sync.conf') -sha256sums=('6b4d422f1b8579ac172c82099a80201167a635c2b699639e59420ab87867a035' +sha256sums=('39e714df856c8d47fe14365b854b9a1b36ed3afa300383d8329452394a01a1c4' '4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324' 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') From 518ee1000c2efd9146856d5b24c18b404e1e3b76 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 16:12:47 +0200 Subject: [PATCH 14/23] update install --- 99-usb-sync.rules | 2 +- PKGBUILD | 4 ++-- udev-usb-sync.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/99-usb-sync.rules b/99-usb-sync.rules index b1d8fb4..af4416a 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -9,4 +9,4 @@ 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-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" +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+=/usr/bin/udev-usb-sync.sh %k" diff --git a/PKGBUILD b/PKGBUILD index 7484e0d..b0d6aac 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.3 -pkgrel=4 +pkgrel=5 pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' @@ -20,6 +20,6 @@ package() { 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" + cpwh ${srcdir}/${pkgname}.sh "${pkgdir}/usr/bin" cp ${srcdir}/${pkgname}.conf "${pkgdir}/etc/${pkgname}" } diff --git a/udev-usb-sync.sh b/udev-usb-sync.sh index 54c51f7..1a133aa 100755 --- a/udev-usb-sync.sh +++ b/udev-usb-sync.sh @@ -11,7 +11,7 @@ max_ration=50 strict_limit=1 # read user config -source /etc/tweak-usb/tweaks.conf +source /etc/usb-dev-sync/usb-dev-sync.conf if [[ "$use_tweaks" = 0 ]]; then exit 0 From 483a454df9532eb6eea47b38b8fde6922c3256e8 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 16:39:59 +0200 Subject: [PATCH 15/23] update install --- .SRCINFO | 19 ------------------- 99-usb-sync.rules | 2 +- PKGBUILD | 10 +++++----- udev-usb-sync.sh => udev-usb-sync | 4 ++-- 4 files changed, 8 insertions(+), 27 deletions(-) delete mode 100644 .SRCINFO rename udev-usb-sync.sh => udev-usb-sync (81%) diff --git a/.SRCINFO b/.SRCINFO deleted file mode 100644 index 877111f..0000000 --- a/.SRCINFO +++ /dev/null @@ -1,19 +0,0 @@ -pkgbase = udev-usb-sync - pkgdesc = Fine tune write cache when USB storage device is plugged - pkgver = 0.3 - pkgrel = 4 - url = https://codeberg.org/wonky/udev-usb-sync - install = udev-usb-sync.install - arch = any - license = MIT - depends = hdparm - provides = udev-usb-sync - backup = etc/udev-usb-sync/udev-usb-sync.conf - source = 99-usb-sync.rules - source = udev-usb-sync.sh - source = udev-usb-sync.conf - sha256sums = 39e714df856c8d47fe14365b854b9a1b36ed3afa300383d8329452394a01a1c4 - sha256sums = 4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324 - sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 - -pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules index af4416a..68c3a3d 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -9,4 +9,4 @@ 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-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" +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/udev-usb-sync %k" diff --git a/PKGBUILD b/PKGBUILD index b0d6aac..50495cc 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.3 -pkgrel=5 +pkgrel=6 pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' @@ -10,9 +10,9 @@ depends=('hdparm') provides=("${pkgname}") backup=("etc/${pkgname}/${pkgname}.conf") install=${pkgname}.install -source=('99-usb-sync.rules' 'udev-usb-sync.sh' 'udev-usb-sync.conf') -sha256sums=('39e714df856c8d47fe14365b854b9a1b36ed3afa300383d8329452394a01a1c4' - '4d3588b241d5214faeeac021668627e115e69f62b28454f351daa532082f6324' +source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') +sha256sums=('be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3' + '2669e043722b33009798c8c30f48414e1eaad0f001631587f502b19a2f11feb7' 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') package() { @@ -20,6 +20,6 @@ package() { install -d -m755 $pkgdir/etc/$pkgname install -d -m755 $pkgdir/usr/bin cp ${srcdir}/99-usb-sync.rules "${pkgdir}/etc/udev/rules.d" - cpwh ${srcdir}/${pkgname}.sh "${pkgdir}/usr/bin" + cp ${srcdir}/${pkgname} "${pkgdir}/usr/bin" cp ${srcdir}/${pkgname}.conf "${pkgdir}/etc/${pkgname}" } diff --git a/udev-usb-sync.sh b/udev-usb-sync similarity index 81% rename from udev-usb-sync.sh rename to udev-usb-sync index 1a133aa..392a1a1 100755 --- a/udev-usb-sync.sh +++ b/udev-usb-sync @@ -2,7 +2,7 @@ # # script to tweak USB storage device filesystem sync # -# soures /etc/tweak-usb/tweaks.conf +# sources /etc/usb-dev-sync/usb-dev-sync.conf # use_tweaks=1 @@ -11,7 +11,7 @@ max_ration=50 strict_limit=1 # read user config -source /etc/usb-dev-sync/usb-dev-sync.conf +source /etc/udev-usb-sync/udev-usb-sync.conf if [[ "$use_tweaks" = 0 ]]; then exit 0 From 353772ed77b535e892a7d001b1f9eeabb9cf5042 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 16:41:27 +0200 Subject: [PATCH 16/23] update package --- .SRCINFO | 19 +++++++++++++++++++ PKGBUILD | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 .SRCINFO diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..a97abda --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,19 @@ +pkgbase = udev-usb-sync + pkgdesc = Fine tune write cache when USB storage device is plugged + pkgver = 0.4 + pkgrel = 1 + url = https://codeberg.org/wonky/udev-usb-sync + install = udev-usb-sync.install + arch = any + license = MIT + depends = hdparm + provides = udev-usb-sync + backup = etc/udev-usb-sync/udev-usb-sync.conf + source = 99-usb-sync.rules + source = udev-usb-sync + source = udev-usb-sync.conf + sha256sums = be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3 + sha256sums = 2669e043722b33009798c8c30f48414e1eaad0f001631587f502b19a2f11feb7 + sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 + +pkgname = udev-usb-sync diff --git a/PKGBUILD b/PKGBUILD index 50495cc..d9ce1e3 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.3 -pkgrel=6 +pkgver=0.4 +pkgrel=1 pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' From 664c6ab1d880bf6dbf17d4189d83c0d611e2a24c Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 16:50:41 +0200 Subject: [PATCH 17/23] update script --- .SRCINFO | 4 ++-- PKGBUILD | 4 ++-- udev-usb-sync | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index a97abda..9e601b8 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = udev-usb-sync pkgdesc = Fine tune write cache when USB storage device is plugged - pkgver = 0.4 + pkgver = 0.5 pkgrel = 1 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install @@ -13,7 +13,7 @@ pkgbase = udev-usb-sync source = udev-usb-sync source = udev-usb-sync.conf sha256sums = be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3 - sha256sums = 2669e043722b33009798c8c30f48414e1eaad0f001631587f502b19a2f11feb7 + sha256sums = 0c60b841dd18521130eb22e18bf62bb5bf3dcf124e64dd7a6764aaf5af972eea sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 pkgname = udev-usb-sync diff --git a/PKGBUILD b/PKGBUILD index d9ce1e3..2ff593e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.4 +pkgver=0.5 pkgrel=1 pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') @@ -12,7 +12,7 @@ backup=("etc/${pkgname}/${pkgname}.conf") install=${pkgname}.install source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') sha256sums=('be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3' - '2669e043722b33009798c8c30f48414e1eaad0f001631587f502b19a2f11feb7' + '0c60b841dd18521130eb22e18bf62bb5bf3dcf124e64dd7a6764aaf5af972eea' 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') package() { diff --git a/udev-usb-sync b/udev-usb-sync index 392a1a1..73895e3 100755 --- a/udev-usb-sync +++ b/udev-usb-sync @@ -21,6 +21,6 @@ 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" +echo "$max_bytes" > "/sys/block/$1/bdi/max_bytes" +echo "$max_ration" > "/sys/block/$1/bdi/max_ratio" +echo "$strict_limit" > "/sys/block/$1/bdi/strict_limit" From 33710ef7f9823161e568423268a87f35605834fb Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 29 Aug 2023 17:51:27 +0200 Subject: [PATCH 18/23] fix spelling error in script --- .SRCINFO | 2 +- PKGBUILD | 4 ++-- udev-usb-sync | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 9e601b8..263a401 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -13,7 +13,7 @@ pkgbase = udev-usb-sync source = udev-usb-sync source = udev-usb-sync.conf sha256sums = be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3 - sha256sums = 0c60b841dd18521130eb22e18bf62bb5bf3dcf124e64dd7a6764aaf5af972eea + sha256sums = 8d16ac2e912fa12c2ea79a8de4b94588b8f9e658fd8a3bf1e65bc8e5318c3140 sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 pkgname = udev-usb-sync diff --git a/PKGBUILD b/PKGBUILD index 2ff593e..0b87561 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.5 +pkgver=0.6 pkgrel=1 pkgdesc='Fine tune write cache when USB storage device is plugged' arch=('any') @@ -12,7 +12,7 @@ backup=("etc/${pkgname}/${pkgname}.conf") install=${pkgname}.install source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') sha256sums=('be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3' - '0c60b841dd18521130eb22e18bf62bb5bf3dcf124e64dd7a6764aaf5af972eea' + '8d16ac2e912fa12c2ea79a8de4b94588b8f9e658fd8a3bf1e65bc8e5318c3140' 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') package() { diff --git a/udev-usb-sync b/udev-usb-sync index 73895e3..ccaab7e 100755 --- a/udev-usb-sync +++ b/udev-usb-sync @@ -7,7 +7,7 @@ use_tweaks=1 max_bytes=16777216 -max_ration=50 +max_ratio=50 strict_limit=1 # read user config @@ -22,5 +22,5 @@ if [[ -z "$1" ]]; then fi echo "$max_bytes" > "/sys/block/$1/bdi/max_bytes" -echo "$max_ration" > "/sys/block/$1/bdi/max_ratio" +echo "$max_ratio" > "/sys/block/$1/bdi/max_ratio" echo "$strict_limit" > "/sys/block/$1/bdi/strict_limit" From d000ce16b63001198932d172ed45ee2b321ef322 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Wed, 30 Aug 2023 08:59:48 +0200 Subject: [PATCH 19/23] rebuild .SRCINFO --- .SRCINFO | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.SRCINFO b/.SRCINFO index 263a401..3092842 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = udev-usb-sync pkgdesc = Fine tune write cache when USB storage device is plugged - pkgver = 0.5 + pkgver = 0.6 pkgrel = 1 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install From 235b7bf4ffb656e2ced545299d2fa89a4fc96c15 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Mon, 16 Oct 2023 06:32:58 +0200 Subject: [PATCH 20/23] update PKGBUILD (removed provides as per guidelines) --- .SRCINFO | 3 +-- PKGBUILD | 17 ++++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 3092842..d0c9955 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,13 +1,12 @@ pkgbase = udev-usb-sync pkgdesc = Fine tune write cache when USB storage device is plugged pkgver = 0.6 - pkgrel = 1 + pkgrel = 2 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install arch = any license = MIT depends = hdparm - provides = udev-usb-sync backup = etc/udev-usb-sync/udev-usb-sync.conf source = 99-usb-sync.rules source = udev-usb-sync diff --git a/PKGBUILD b/PKGBUILD index 0b87561..8b3edbf 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,25 +1,24 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.6 -pkgrel=1 +pkgrel=2 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}") backup=("etc/${pkgname}/${pkgname}.conf") -install=${pkgname}.install +install="${pkgname}.install" source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') sha256sums=('be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3' '8d16ac2e912fa12c2ea79a8de4b94588b8f9e658fd8a3bf1e65bc8e5318c3140' 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') package() { - install -d -m755 $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} "${pkgdir}/usr/bin" - cp ${srcdir}/${pkgname}.conf "${pkgdir}/etc/${pkgname}" + install -d -m755 "$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}" "${pkgdir}/usr/bin" + cp "${srcdir}/${pkgname}.conf" "${pkgdir}/etc/${pkgname}" } From b9129ec0ed58443ce501443bdf11c012601bc4bc Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 27 Aug 2024 11:15:49 +0200 Subject: [PATCH 21/23] Update rules and scripts to v.0.8 --- .SRCINFO | 12 +++++----- 99-usb-sync.rules | 49 +++++++++++++++++++++++++++++++------- PKGBUILD | 14 +++++------ udev-usb-sync | 59 +++++++++++++++++++++++++++++++++++++++++----- udev-usb-sync.conf | 52 ++++++++++++++++++++++++++++++++++++++-- 5 files changed, 157 insertions(+), 29 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index d0c9955..e1d8868 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = udev-usb-sync - pkgdesc = Fine tune write cache when USB storage device is plugged - pkgver = 0.6 - pkgrel = 2 + pkgdesc = Fine tune write cache and impose buffer limites when USB storage device is plugged + pkgver = 0.8 + pkgrel = 1 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install arch = any @@ -11,8 +11,8 @@ pkgbase = udev-usb-sync source = 99-usb-sync.rules source = udev-usb-sync source = udev-usb-sync.conf - sha256sums = be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3 - sha256sums = 8d16ac2e912fa12c2ea79a8de4b94588b8f9e658fd8a3bf1e65bc8e5318c3140 - sha256sums = bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453 + sha256sums = 4f5888647d9be47a8992a7f5ea52eadd5baac0295a39751baa496815bddb065f + sha256sums = b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f + sha256sums = 7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687 pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules index 68c3a3d..06ad118 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -1,12 +1,45 @@ +# This rules file is part of udev-usb-sync package +# +# MIT License +# +# Copyright (c) 2023 Frede Hundewadt (@linux-aarhus) +# +# Permission is hereby granted, free of charge,to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# @linux-aarhus - root.nix.dk +# +# configuration : /etc/usb-dev-sync/usb-dev-sync.conf +# triggered by : /usr/lib/udev/rules.d/99-usb-sync.rules +# +# contributors: @megavolt (Manjaro Forum) +# : @linux-aarhus (Manjaro Forum) +# inspired by : @kwg (EndeavourOS Forum) + # 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" -# + # 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 -# 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 %k" +# implemented using: /usr/bin/udev-usb-sync +# see configuration: /etc/udev-usb-sync/udev-usb-sync.conf +# Works since Linux 6.2 +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="12", RUN+="/usr/bin/udev-usb-sync %k 12" +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="480", RUN+="/usr/bin/udev-usb-sync %k 480" +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="5000", RUN+="/usr/bin/udev-usb-sync %k 5000" +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="10000", RUN+="/usr/bin/udev-usb-sync %k 10000" diff --git a/PKGBUILD b/PKGBUILD index 8b3edbf..2d1246c 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,8 +1,8 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.6 -pkgrel=2 -pkgdesc='Fine tune write cache when USB storage device is plugged' +pkgver=0.8 +pkgrel=1 +pkgdesc='Fine tune write cache and impose buffer limites when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' license=('MIT') @@ -10,15 +10,15 @@ depends=('hdparm') backup=("etc/${pkgname}/${pkgname}.conf") install="${pkgname}.install" source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') -sha256sums=('be08224041008876efb09e6b2a119d6f42b911efecf0563be413f9ff2d33a7b3' - '8d16ac2e912fa12c2ea79a8de4b94588b8f9e658fd8a3bf1e65bc8e5318c3140' - 'bc902da2c453355e1dbc3a970a564daf71d41c6278dc771a930aa3badb90e453') +sha256sums=('4f5888647d9be47a8992a7f5ea52eadd5baac0295a39751baa496815bddb065f' + 'b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f' + '7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687') package() { install -d -m755 "$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}" "${pkgdir}/usr/bin" + cp "${srcdir}/${pkgname}" "${pkgdir}/usr/bin/${pkgname}" cp "${srcdir}/${pkgname}.conf" "${pkgdir}/etc/${pkgname}" } diff --git a/udev-usb-sync b/udev-usb-sync index ccaab7e..1192dcb 100755 --- a/udev-usb-sync +++ b/udev-usb-sync @@ -1,18 +1,53 @@ #!/usr/bin/bash # -# script to tweak USB storage device filesystem sync +# The script is part of udev-usb-sync package # -# sources /etc/usb-dev-sync/usb-dev-sync.conf +# This program is free software: you can redistribute it and/or modify +# it under the terms of the Affero GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# @linux-aarhus - root.nix.dk +# +# configuration : /etc/usb-dev-sync/usb-dev-sync.conf +# triggered by : /usr/lib/udev/rules.d/99-usb-sync.rules +# +# contributors: @megavolt (Manjaro Forum) +# : @linux-aarhus (Manjaro Forum) +# inspired by : @kwg (EndeavourOS Forum) +# +# Arguments provided by udev rule +# $1: usb block device +# $2: usb bandwidth reported by device +# +# default values (override in configuration file) # +# block device is passed in $1 +# speed is passed as $2 + +# defaults use_tweaks=1 -max_bytes=16777216 +use_bandwith=1 max_ratio=50 strict_limit=1 +max_bytes=16777216 +# speed defined values +max_bytes_12=10485 +max_bytes_480=629145 +max_bytes_5000=655369 +max_bytes_10000=13107200 -# read user config +# source configuratoin to override default values source /etc/udev-usb-sync/udev-usb-sync.conf - if [[ "$use_tweaks" = 0 ]]; then exit 0 fi @@ -21,6 +56,18 @@ if [[ -z "$1" ]]; then exit 1 fi -echo "$max_bytes" > "/sys/block/$1/bdi/max_bytes" +# if speed value is not present use default max_bytes +[[ -z $2 ]] && use_bandwith=0 + +# apply max_ratio echo "$max_ratio" > "/sys/block/$1/bdi/max_ratio" +# apply strict limit echo "$strict_limit" > "/sys/block/$1/bdi/strict_limit" +# apply max_bytes depending on speed value +if [[ use_bandwith == 0 ]]; then + # apply default value + echo "$max_bytes" > "/sys/block/$1/bdi/max_bytes" +else + # apply bandwidth defined value + echo "$max_bytes_$2" > "/sys/block/%1/bdi/max_bytes" +fi \ No newline at end of file diff --git a/udev-usb-sync.conf b/udev-usb-sync.conf index 31683ee..5e98857 100644 --- a/udev-usb-sync.conf +++ b/udev-usb-sync.conf @@ -1,5 +1,53 @@ -# default values +# The configuration file is part of udev-usb-sync package +# +# MIT License +# +# Copyright (c) 2023 Frede Hundewadt (@linux-aarhus) +# +# Permission is hereby granted, free of charge,to any person obtaining a copy +# of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# @linux-aarhus - root.nix.dk +# +# configuration : /etc/usb-dev-sync/usb-dev-sync.conf +# triggered by : /usr/lib/udev/rules.d/99-usb-sync.rules +# +# contributors: @megavolt (Manjaro Forum) +# : @linux-aarhus (Manjaro Forum) +# inspired by : @kwg (EndeavourOS Forum) +# +# The values used can be modified if you need to do so +# The commented default usually works well #use_tweaks=1 -#max_bytes=16777216 +#use_bandwith=1 + #max_ratio=50 +# strict limit requires kernel >= 6.2 #strict_limit=1 + +# a sane default bandwidth value +#max_bytes=16777216 + +# bandwith based limitation requires >= 6.1 +# values as reported by the device ATTRS{speed} +# These values seem to be good and stable. +# It buffers 0,01s of the current bandwidth. +#max_bytes_12=10485 +#max_bytes_480=629145 +#max_bytes_5000=655369 +#max_bytes_10000=13107200 From 7310b48b1db8bfada43a4f75dfd391f52c7376bd Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Tue, 27 Aug 2024 11:20:31 +0200 Subject: [PATCH 22/23] Added catchall rule --- .SRCINFO | 2 +- 99-usb-sync.rules | 1 + PKGBUILD | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index e1d8868..45235ef 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -11,7 +11,7 @@ pkgbase = udev-usb-sync source = 99-usb-sync.rules source = udev-usb-sync source = udev-usb-sync.conf - sha256sums = 4f5888647d9be47a8992a7f5ea52eadd5baac0295a39751baa496815bddb065f + sha256sums = 0c945450f8b472995c27ac4d0b41f333a49a7c8a181827cd57bb80e71194a6f3 sha256sums = b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f sha256sums = 7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687 diff --git a/99-usb-sync.rules b/99-usb-sync.rules index 06ad118..2e92d01 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -39,6 +39,7 @@ ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bi # implemented using: /usr/bin/udev-usb-sync # see configuration: /etc/udev-usb-sync/udev-usb-sync.conf # Works since Linux 6.2 +ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/udev-usb-sync %k" ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="12", RUN+="/usr/bin/udev-usb-sync %k 12" ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="480", RUN+="/usr/bin/udev-usb-sync %k 480" ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="5000", RUN+="/usr/bin/udev-usb-sync %k 5000" diff --git a/PKGBUILD b/PKGBUILD index 2d1246c..28bb441 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' pkgver=0.8 -pkgrel=1 +pkgrel=2 pkgdesc='Fine tune write cache and impose buffer limites when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' @@ -10,7 +10,7 @@ depends=('hdparm') backup=("etc/${pkgname}/${pkgname}.conf") install="${pkgname}.install" source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') -sha256sums=('4f5888647d9be47a8992a7f5ea52eadd5baac0295a39751baa496815bddb065f' +sha256sums=('0c945450f8b472995c27ac4d0b41f333a49a7c8a181827cd57bb80e71194a6f3' 'b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f' '7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687') From 5294f9cc53f2ee318a31f19ed1d0f140eccd7447 Mon Sep 17 00:00:00 2001 From: Frede H Date: Wed, 11 Sep 2024 15:53:24 +0200 Subject: [PATCH 23/23] update rules - use auto calc for buffers based on hardware and speed --- .SRCINFO | 9 +++--- 99-usb-sync.rules | 21 ++++++------ PKGBUILD | 12 +++---- udev-usb-sync | 79 ++++++++++++++++++++++++---------------------- udev-usb-sync.conf | 28 ++++++---------- 5 files changed, 72 insertions(+), 77 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 45235ef..d8b8141 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,18 +1,19 @@ pkgbase = udev-usb-sync pkgdesc = Fine tune write cache and impose buffer limites when USB storage device is plugged - pkgver = 0.8 + pkgver = 0.9 pkgrel = 1 url = https://codeberg.org/wonky/udev-usb-sync install = udev-usb-sync.install arch = any license = MIT depends = hdparm + depends = bc backup = etc/udev-usb-sync/udev-usb-sync.conf source = 99-usb-sync.rules source = udev-usb-sync source = udev-usb-sync.conf - sha256sums = 0c945450f8b472995c27ac4d0b41f333a49a7c8a181827cd57bb80e71194a6f3 - sha256sums = b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f - sha256sums = 7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687 + sha256sums = 14ff9fa9783f72cb321792ea8a44051d0eb0aaf244edec773d7fa16fdf8dc023 + sha256sums = bdc35135e6f8074890a911a501ca4fb3e6a7888963b51c3a1edb98c23bb62ec2 + sha256sums = ec26baede73e94f9cfab77cd5aa6e0ffebcc413ff657a4e98eae6c9e2145655e pkgname = udev-usb-sync diff --git a/99-usb-sync.rules b/99-usb-sync.rules index 2e92d01..292bdd6 100644 --- a/99-usb-sync.rules +++ b/99-usb-sync.rules @@ -31,16 +31,13 @@ # : @linux-aarhus (Manjaro Forum) # inspired by : @kwg (EndeavourOS Forum) -# 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" +KERNEL!="sd[a-z]", GOTO="usb_limit_write_cache_end" +ENV{ID_USB_TYPE}!="disk", GOTO="usb_limit_write_cache_end" +ACTION!="add|change", GOTO="usb_limit_write_cache_end" -# rules to impose buffer limits on USB devices -# implemented using: /usr/bin/udev-usb-sync -# see configuration: /etc/udev-usb-sync/udev-usb-sync.conf -# Works since Linux 6.2 -ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/udev-usb-sync %k" -ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="12", RUN+="/usr/bin/udev-usb-sync %k 12" -ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="480", RUN+="/usr/bin/udev-usb-sync %k 480" -ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="5000", RUN+="/usr/bin/udev-usb-sync %k 5000" -ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", ATTRS{speed}=="10000", RUN+="/usr/bin/udev-usb-sync %k 10000" +ATTRS{bDeviceClass}!="09", ATTRS{speed}=="10000", RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end" +ATTRS{bDeviceClass}!="09", ATTRS{speed}=="5000", RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end" +ATTRS{bDeviceClass}!="09", ATTRS{speed}=="480", RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end" +ATTRS{bDeviceClass}!="09", ATTRS{speed}=="12", RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end" + +LABEL="usb_limit_write_cache_end" diff --git a/PKGBUILD b/PKGBUILD index 28bb441..104c6f8 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,18 +1,18 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.8 -pkgrel=2 +pkgver=0.9 +pkgrel=1 pkgdesc='Fine tune write cache and impose buffer limites when USB storage device is plugged' arch=('any') url='https://codeberg.org/wonky/udev-usb-sync' license=('MIT') -depends=('hdparm') +depends=('hdparm' 'bc') backup=("etc/${pkgname}/${pkgname}.conf") install="${pkgname}.install" source=('99-usb-sync.rules' 'udev-usb-sync' 'udev-usb-sync.conf') -sha256sums=('0c945450f8b472995c27ac4d0b41f333a49a7c8a181827cd57bb80e71194a6f3' - 'b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f' - '7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687') +sha256sums=('14ff9fa9783f72cb321792ea8a44051d0eb0aaf244edec773d7fa16fdf8dc023' + 'bdc35135e6f8074890a911a501ca4fb3e6a7888963b51c3a1edb98c23bb62ec2' + 'ec26baede73e94f9cfab77cd5aa6e0ffebcc413ff657a4e98eae6c9e2145655e') package() { install -d -m755 "$pkgdir/etc/udev/rules.d" diff --git a/udev-usb-sync b/udev-usb-sync index 1192dcb..46a1df2 100755 --- a/udev-usb-sync +++ b/udev-usb-sync @@ -18,7 +18,7 @@ # @linux-aarhus - root.nix.dk # # configuration : /etc/usb-dev-sync/usb-dev-sync.conf -# triggered by : /usr/lib/udev/rules.d/99-usb-sync.rules +# triggered by : /etc/udev/rules.d/99-usb-sync.rules # # contributors: @megavolt (Manjaro Forum) # : @linux-aarhus (Manjaro Forum) @@ -28,46 +28,51 @@ # $1: usb block device # $2: usb bandwidth reported by device # -# default values (override in configuration file) -# -# block device is passed in $1 -# speed is passed as $2 +set -euo pipefail -# defaults -use_tweaks=1 -use_bandwith=1 -max_ratio=50 -strict_limit=1 -max_bytes=16777216 -# speed defined values -max_bytes_12=10485 -max_bytes_480=629145 -max_bytes_5000=655369 -max_bytes_10000=13107200 +LANG=C +LC_NUMERIC=C -# source configuratoin to override default values -source /etc/udev-usb-sync/udev-usb-sync.conf -if [[ "$use_tweaks" = 0 ]]; then - exit 0 -fi +AUTOCALC=${AUTOCALC:-1} +CONFIG='/etc/udev-usb-sync/udev-usb-sync.conf' -if [[ -z "$1" ]]; then - exit 1 -fi +[[ -f $CONFIG ]] && source $CONFIG -# if speed value is not present use default max_bytes -[[ -z $2 ]] && use_bandwith=0 +BLOCKDEVICE="$1" +SPEED="$2" +KERNEL_MAJOR_VERSION=$(uname -r | awk -F'.' '{print $1}') -# apply max_ratio -echo "$max_ratio" > "/sys/block/$1/bdi/max_ratio" -# apply strict limit -echo "$strict_limit" > "/sys/block/$1/bdi/strict_limit" -# apply max_bytes depending on speed value -if [[ use_bandwith == 0 ]]; then - # apply default value - echo "$max_bytes" > "/sys/block/$1/bdi/max_bytes" -else - # apply bandwidth defined value - echo "$max_bytes_$2" > "/sys/block/%1/bdi/max_bytes" +# disable write cache for device if possible +[[ -n $(which hdparm) ]] && $(which hdparm) -W 0 /dev/$BLOCKDEVICE + +if [[ $KERNEL_MAJOR_VERSION -le 5 ]]; 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 + # 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 + + # apply strict limit + echo 1 > /sys/block/$BLOCKDEVICE/bdi/strict_limit + + if [[ ${AUTOCALC} == 0 ]]; then + # apply 16M as max_bytes + echo 16777216 > /sys/block/$BLOCKDEVICE/bdi/max_bytes + elif [[ ${AUTOCALC} == 1 ]]; then + BUFFER_TIME=${BUFFER_TIME:-"0.05"} + SAFETY_FACTOR=${SAFETY_FACTOR:-"1.3"} + BUFFER_SIZE=$(printf '%.0f' `echo "( ($SPEED / 8) * $BUFFER_TIME * $SAFETY_FACTOR) * 1024 * 1024" | bc`) + # for x in 12 480 5000 10000; do echo -n "$x -> " ;printf "%.0f\n" ` echo "(($x / 8) * 0.05 * 1.3) * 1024 * 1024" | bc`; done + # 62915 + # 4089446 + # 42593157 + # 85196800 + # apply calculated buffer size + echo "$BUFFER_SIZE" > /sys/block/$BLOCKDEVICE/bdi/max_bytes + fi fi \ No newline at end of file diff --git a/udev-usb-sync.conf b/udev-usb-sync.conf index 5e98857..ee3beab 100644 --- a/udev-usb-sync.conf +++ b/udev-usb-sync.conf @@ -24,8 +24,8 @@ # # @linux-aarhus - root.nix.dk # -# configuration : /etc/usb-dev-sync/usb-dev-sync.conf -# triggered by : /usr/lib/udev/rules.d/99-usb-sync.rules +# trigger script: /usr/bin/usb-dev-sync +# triggered by : /etc/udev/rules.d/99-usb-sync.rules # # contributors: @megavolt (Manjaro Forum) # : @linux-aarhus (Manjaro Forum) @@ -33,21 +33,13 @@ # # The values used can be modified if you need to do so # The commented default usually works well -#use_tweaks=1 -#use_bandwith=1 +# +# +## Let it calculate based on given bandwidth +#AUTOCALC=1 -#max_ratio=50 -# strict limit requires kernel >= 6.2 -#strict_limit=1 +## The time in seconds to hold data in RAM +#BUFFER_TIME='0.05' -# a sane default bandwidth value -#max_bytes=16777216 - -# bandwith based limitation requires >= 6.1 -# values as reported by the device ATTRS{speed} -# These values seem to be good and stable. -# It buffers 0,01s of the current bandwidth. -#max_bytes_12=10485 -#max_bytes_480=629145 -#max_bytes_5000=655369 -#max_bytes_10000=13107200 +## multiplicator for safety reasons. +#SAFETY_FACTOR='1.3'