From 7c9f5f9882af2203e0445e1d9044f4df0bc00265 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Sun, 17 Sep 2023 13:58:54 +0200 Subject: [PATCH] extrahd: use udev rule to mount extrahd partitions the previous patches for https://bugzilla.ipfire.org/show_bug.cgi?id=12863 introduce a new bug that slow devices are not mounted at boot. So now udev calls the extrahd script with the uuid. Signed-off-by: Arne Fitzenreiter --- config/extrahd/extrahd.pl | 36 ++++++++++++++++++++++++++++-------- config/rootfiles/common/udev | 1 + config/udev/61-extrahd.rules | 1 + lfs/udev | 4 ++++ 4 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 config/udev/61-extrahd.rules diff --git a/config/extrahd/extrahd.pl b/config/extrahd/extrahd.pl index 145a2a43a1..cc85228d56 100644 --- a/config/extrahd/extrahd.pl +++ b/config/extrahd/extrahd.pl @@ -35,10 +35,20 @@ extrahd_mount() { local failed=0 while IFS=';' read -r device filesystem mountpoint rest; do - # Filter by mountpoint if set - if [ -n "${_mountpoint}" ] && [ "${mountpoint}" != "${_mountpoint}" ]; then - continue - fi + # Filter by UUID or mountpoint + case "${_mountpoint}" in + UUID=*) + if [ "${device}" != "${_mountpoint}" ]; then + continue + fi + ;; + + /*) + if [ -n "${_mountpoint}" ] && [ "${mountpoint}" != "${_mountpoint}" ]; then + continue + fi + ;; + esac # Check that the mountpoint starts with a slash if [ "${mountpoint:0:1}" != "/" ]; then @@ -75,10 +85,20 @@ extrahd_umount() { local failed=0 while IFS=';' read -r device filesystem mountpoint rest; do - # Filter by mountpoint if set - if [ -n "${_mountpoint}" ] && [ "${mountpoint}" != "${_mountpoint}" ]; then - continue - fi + # Filter by UUID or mountpoint + case "${_mountpoint}" in + UUID=*) + if [ "${device}" != "${_mountpoint}" ]; then + continue + fi + ;; + + /*) + if [ -n "${_mountpoint}" ] && [ "${mountpoint}" != "${_mountpoint}" ]; then + continue + fi + ;; + esac # Do not try to umount if nothing is mounted if ! mountpoint "${mountpoint}" &>/dev/null; then diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index e5c9bd01f8..876ae0c5a2 100644 --- a/config/rootfiles/common/udev +++ b/config/rootfiles/common/udev @@ -70,6 +70,7 @@ lib/udev/rules.d/60-persistent-storage.rules lib/udev/rules.d/60-persistent-v4l.rules lib/udev/rules.d/60-sensor.rules lib/udev/rules.d/60-serial.rules +lib/udev/rules.d/61-extrahd.rules lib/udev/rules.d/64-btrfs.rules lib/udev/rules.d/70-camera.rules lib/udev/rules.d/70-joystick.rules diff --git a/config/udev/61-extrahd.rules b/config/udev/61-extrahd.rules new file mode 100644 index 0000000000..114f2d6658 --- /dev/null +++ b/config/udev/61-extrahd.rules @@ -0,0 +1 @@ +ACTION=="add", SUBSYSTEM=="block", RUN+="/var/ipfire/extrahd/bin/extrahd.pl udev-event" diff --git a/lfs/udev b/lfs/udev index eb01ae8488..703d98b862 100644 --- a/lfs/udev +++ b/lfs/udev @@ -122,6 +122,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/udev/60-net.rules \ /lib/udev/rules.d + # Install ExtraHD rules + install -v -m 644 $(DIR_SRC)/config/udev/61-extrahd.rules \ + /lib/udev/rules.d + # Install AQM rules install -v -m 644 $(DIR_SRC)/config/udev/99-aqm.rules \ /lib/udev/rules.d -- 2.39.5