0

For some reason systemd gives timeout in one of my cryptsetup devices when trying to mount it. Here are the Units and script:

udev rules:

ACTION=="add", KERNEL=="sd[a-z][0-9]", ATTRS{serial}=="NA8F9WKF",                                                               SYMLINK+="BigHDD", TAG+="systemd"
ACTION=="add", KERNEL=="sd[a-z][0-9]", ATTRS{serial}=="AA00000000065396",                                                       SYMLINK+="clavem", TAG+="systemd"
ACTION=="add", KERNEL=="sd[a-z][0-9]", ATTRS{wwid}=="t10.ATA     WDC WD10EZRZ-00Z5HB0                         WD-WCC4M6HRPV4V", SYMLINK+="HDDsB",  TAG+="systemd"
ACTION=="add", KERNEL=="sd[a-z][0-9]", ATTRS{wwid}=="t10.ATA     WDC WD10EZRZ-00Z5HB0                         WD-WCC4M3EYESNV", SYMLINK+="HDDsC",  TAG+="systemd"

mnt-HDDs.automount

[Unit]
Description=Automount HDDs
Requires=dev-clavem.device

[Automount]
Where=/mnt/HDDs

[Install]
WantedBy=multi-user.target

mnt-HDDs.mount:

[Unit]
BindsTo=HDDs-unlock.service dev-clavem.device media-clavem.mount
After=HDDs-unlock.service dev-HDDsB.device dev-HDDsC.device

[Mount]
What=/dev/mapper/cryptHDDC
Where=/mnt/HDDs
Type=btrfs
Options= noatime,compress=lzo,autodefrag

HDDs-unlock.service:

[Unit]
Description=HDDs unlock
BindsTo=mnt-HDDs.mount dev-clavem.device dev-HDDsB.device dev-HDDsC.device
Requires=media-clavem.mount dev-HDDsB.device dev-HDDsC.device
After=media-clavem.mount dev-HDDsB.device dev-HDDsC.device

[Service]
Type=oneshot
RemainAfterExit=yes
KillMode=none
ExecStart=/home/rbenedetti/teste.sh
ExecStop=/sbin/cryptsetup luksClose cryptHDDB ; /sbin/cryptsetup luksClose 
cryptHDDC

[Install]
RequiredBy=mnt-HDDs.mount

test.sh

#!/bin/bash

i=0
while [[ ! -b /dev/disk/by-uuid/42e7eacf-5e09-4476-8dbc-1919675c1595 ]]; do
    echo "cant find /dev/disk/by-uuid/42e7eacf-5e09-4476-8dbc-1919675c1595... waiting. $i" > ~/testLog
    if [[ "$counter" -gt 10 ]]; then
        echo "giving up." > ~/testLog
        exit 1
    fi
    sleep 0.5
    let i++
done

i=0
while [[ ! -b /dev/disk/by-uuid/826b9963-eb49-4eac-a9c0-e741552491d4 ]]; do
    echo "cant find /dev/disk/by-uuid/826b9963-eb49-4eac-a9c0-e741552491d4... waiting. $i" > ~/testLog
    if [[ "$counter" -gt 10 ]]; then
        echo "giving up." > ~/testLog
        exit 1
    fi
    sleep 0.5
    let i++
done


/sbin/cryptsetup --key-file /media/clavem/k luksOpen /dev/disk/by-uuid/42e7eacf-5e09-4476-8dbc-1919675c1595 cryptHDDC
/sbin/cryptsetup --key-file /media/clavem/k luksOpen /dev/disk/by-uuid/826b9963-eb49-4eac-a9c0-e741552491d4 cryptHDDB 


i=0
while [[ ! -b /dev/mapper/cryptHDDB ]]; do
    echo "cant find /dev/mapper/cryptHDDB... waiting. $i" > ~/testLog
    /sbin/cryptsetup --key-file /media/clavem/k luksOpen /dev/disk/by-uuid/826b9963-eb49-4eac-a9c0-e741552491d4 cryptHDDB 
    if [[ "$counter" -gt 10 ]]; then
        echo "giving up." > ~/testLog
        exit 1
    fi
    sleep 0.5
    let i++
done

i=0
while [[ ! -b /dev/mapper/cryptHDDC ]]; do
    echo "cant find /dev/mapper/cryptHDDC... waiting. $i" > ~/testLog
    /sbin/cryptsetup --key-file /media/clavem/k luksOpen /dev/disk/by-uuid/42e7eacf-5e09-4476-8dbc-1919675c1595 cryptHDDC
    if [[ "$counter" -gt 10 ]]; then
        echo "giving up." > ~/testLog
        exit 1
    fi
    sleep 0.5
    let i++
done

 echo "somehow passed...>" > ~/testLog

teste.sh is mostly full of tests because I was trying to figure why timeout was occuring in a oneshot service. for some reason when doing systemctl restart mnt-HDDs.mount, it goes fine and mount my partition... It gives timeout in mnt-mapper-cryptHDDC.device

0

Ok, apparently mounting through cryptHDDB works what makes me believe there is some problem between udev and Systemd.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.