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 arne_f@ipfire.org --- 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 145a2a43a..cc85228d5 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 e5c9bd01f..876ae0c5a 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 000000000..114f2d665 --- /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 eb01ae848..703d98b86 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