From 28459b2d925412b944fd4f9dfd8a722c7dc067dc Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Sat, 4 Mar 2023 17:38:36 +0100 Subject: [PATCH 01/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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/24] 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' From 2f98c317457fc905e9e4bb5da130c5d06bd1255f Mon Sep 17 00:00:00 2001 From: Frede H Date: Wed, 11 Sep 2024 16:14:01 +0200 Subject: [PATCH 24/24] update rules - use auto calc for buffers based on hardware and speed --- 99-usb-sync.rules | 19 ++++------ LICENSE | 2 +- PKGBUILD | 16 ++++---- README.md | 94 ++++++++++++++++------------------------------ udev-usb-sync | 81 ++++++++++++++++++++------------------- udev-usb-sync.conf | 30 ++++++--------- 6 files changed, 104 insertions(+), 138 deletions(-) diff --git a/99-usb-sync.rules b/99-usb-sync.rules index 8b97fd0..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", 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/LICENSE b/LICENSE index 9112a7a..2071b23 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Frede Hundewadt (@linux-aarhus) +Copyright (c) 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: diff --git a/PKGBUILD b/PKGBUILD index a5c659d..edb93ce 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,18 +1,18 @@ # Maintainer: root.nix.dk pkgname='udev-usb-sync' -pkgver=0.8 +pkgver=0.9 pkgrel=1 -pkgdesc='Fine tune write cache when USB storage device is plugged' +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' +url='https://gitlab.manjaro.org/fhdk/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=('4f5888647d9be47a8992a7f5ea52eadd5baac0295a39751baa496815bddb065f' - 'b514e3bf1ea55f5e1dc4f5af46da3b5f9f2409da1efe7b36a11647704faf0a8f' - '7cf194b2e3767f8ce4dcbf98b665e46d67624034d5ec0f4cb89f359b677c3687') +sha256sums=('14ff9fa9783f72cb321792ea8a44051d0eb0aaf244edec773d7fa16fdf8dc023' + 'd2987ed0e88d027024ea6c060e42e5557505216d97029930620bd60fccc22b8b' + '4666e62ef38fe4c9c982411f92a99e8e8e5cf73eb08e83252afaf5ec0b527acc') package() { install -d -m755 "$pkgdir/etc/udev/rules.d" @@ -21,4 +21,4 @@ package() { cp "${srcdir}/99-usb-sync.rules" "${pkgdir}/etc/udev/rules.d" cp "${srcdir}/${pkgname}" "${pkgdir}/usr/bin/${pkgname}" cp "${srcdir}/${pkgname}.conf" "${pkgdir}/etc/${pkgname}" -} \ No newline at end of file +} diff --git a/README.md b/README.md index 5ba5302..dca3cb9 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,30 @@ -# Disable write cache for usb storage devices - -[Manjaro Forum topic][0] - ## Linux filesystem cache Linux agressively caches files in order to improve overall performance. +* https://linuxatemyram.com + When copying large amount of files to an USB storage this often results in some wait time until the device can be safely removed. How long you have to wait depends on your system and the quality of the USB storage device. Numerous issues regarding this has resulted in various suggestions involving sysctl tweaks and trim. -udev rule to disable write-cache + +Examples: + +* https://forum.manjaro.org/t/unbelievably-slow-file-transfer-speeds/123222 +* https://forum.manjaro.org/t/decrease-dirty-bytes-for-more-reliable-usb-transfer/120798 +* https://forum.manjaro.org/t/slow-usb-transfers/146863 +* https://forum.manjaro.org/t/usb-transfer-speed-5mb-sec-dropping/146777 +* https://forum.manjaro.org/t/extremely-slow-file-transfer-speeds-from-usb-3-0-to-external-hdd/39339 +* https://forum.manjaro.org/t/transfer-speed-slows-down-to-a-crawl-after-10gb-transfered/43453 +* https://forum.manjaro.org/t/usb-transfer-data-drops-drastically-and-maximum-number-of-clients-are-reached/93278 +* https://forum.manjaro.org/t/file-copy-on-a-usb-2-slows-down-to-a-halt/36316 +* https://forum.manjaro.org/t/dolphin-large-file-transfer-to-usb-stick-indicates-completed-after-caching-is-done-transfer-still-ongoing/132634 ## udev rule to disable write-cache -In another place one user threw in an udev rule which would disable write-cache for devices when they were added and while it was just an idea - it triggered my curiosity. +In [another place][2] one user threw in an udev rule which would disable write-cache for devices when they were added and while it was just an idea - it triggered my curiosity. I dug into the intricacies of udev and found a method to only target USB storage devices. @@ -23,57 +32,13 @@ I dug into the intricacies of udev and found a method to only target USB storage The rule has gotten a major overhaul and now consist of the rule, a config file and a script -### The rule **/etc/udev/rules.d/99-usb-sync.rules** -``` -# 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" +https://gitlab.manjaro.org/fhdk/udev-usb-sync/-/blob/master/99-usb-sync.rules -# -# 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/udev-usb-sync %k" -``` -### The config **/etc/usb-dev-sync/udev-usb-sync.conf** -``` -# default values -#use_tweaks=1 -#max_bytes=16777216 -#max_ratio=50 -#strict_limit=1 -``` -### The script **/usr/bin/udev-usb-sync** -``` -#!/usr/bin/bash -# -# script to tweak USB storage device filesystem sync -# -# sources /etc/usb-dev-sync/usb-dev-sync.conf -# +https://gitlab.manjaro.org/fhdk/udev-usb-sync/-/blob/master/udev-usb-sync.conf -use_tweaks=1 -max_bytes=16777216 -max_ratio=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" > "/sys/block/$1/bdi/max_bytes" -echo "$max_ratio" > "/sys/block/$1/bdi/max_ratio" -echo "$strict_limit" > "/sys/block/$1/bdi/strict_limit" -``` +https://gitlab.manjaro.org/fhdk/udev-usb-sync/-/blob/master/udev-usb-sync +## How it works The rule activates when udev detects * add or change @@ -86,7 +51,9 @@ The rule activates when udev detects - read config and apply user values - if use_tweaks=0 the script exits - if use_tweaks=1 the applies the values (default or config) + - set a max_bytes value based on device speed +## How to setup manually Create a file in **/etc/udev/rules.d/99-usb-sync.rules** and paste the rule into it. Create a file in **/etc/udev-usb-sync/udev-usb-sync.conf** and paste the default values. Create a file in **/usr/bin/udev-usb-sync** and paste the script content. @@ -99,15 +66,20 @@ Reload udev sudo udevadm control --reload -Then plug an usb device - open in your file manager - copy a huge amout of files to the device - when the copy is done - click eject in the file manager - note how quick the device is ejected. +Then plug an usb device - open in your file manager - copy a huge amount of files to the device - when the copy is done - click eject in the file manager - note how quick the device is ejected. -For those preferring the package manager, I have created a [PKGBUILD][4] which will pull the **hdparm** dependency upon installation. +For those preferring the package manager, I have created a [PKGBUILD][1] which will pull the **hdparm** dependency upon installation. pamac build udev-usb-sync -Another idea by [@megavolt][1] at [Manjaro Forum][2] which does not require hdparm. +Another fine utility script provided by @cscs fine-tunes a number of system parameters with the option to input your own values when the script is run -[0]: https://forum.manjaro.org/t/root-tip-how-to-bypass-write-cache-for-usb-storage-devices/135566 -[1]: https://forum.manjaro.org/u/megavolt -[2]: https://forum.manjaro.org/t/decrease-dirty-bytes-for-more-reliable-usb-transfer/120798/4 -[4]: https://aur.archlinux.org/packages/udev-usb-sync \ No newline at end of file +https://gitlab.com/cscs/maxperfwiz + +https://gitlab.manjaro.org/fhdk/udev-usb-sync + +* Cross posted - https://root.nix.dk/en/system-configuration/disable-write-cache-for-usb-devices +* Related topic with tests - [Slow USB transfers - #12 by linux-aarhus](https://forum.manjaro.org/t/slow-usb-transfers/146863/12) + +[1]: https://aur.archlinux.org/packages/udev-usb-sync +[2]: https://forum.endeavouros.com/t/how-come-everything-is-written-when-i-decide-to-unmount-a-usbdrive/37178/10 \ No newline at end of file diff --git a/udev-usb-sync b/udev-usb-sync index b14ce65..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" -fi +# 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 42d8b2f..ee3beab 100644 --- a/udev-usb-sync.conf +++ b/udev-usb-sync.conf @@ -1,4 +1,4 @@ -# # The configuration file is part of udev-usb-sync package +# The configuration file is part of udev-usb-sync package # # MIT License # @@ -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'