summaryrefslogtreecommitdiffstats
path: root/hooks/sata
blob: fb6ed90ea6af9fa825d0b9f832890bd380e2388c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# vim: set ft=sh:
run_hook ()
{
    if [ -e /sys/bus/scsi/devices/ ]; then
        msg -n "Loading scsi modules..."
        for d in /sys/bus/scsi/devices/*; do
            if [ -e "${d}/type" ]; then
                read m < "${d}/type"
                case "$m" in
                    0)   /bin/modprobe -q sd_mod 2>&1 >/dev/null ;;
                    # this below is take from the Arch udev rules
                    1)   read vendor < "${d}/vendor"
                         if [ "${vendor}" = "Onstream" ]; then
                             read model < "${d}/model"
                             case "$model" in
                                 ADR*) /bin/modprobe -q st >/dev/null 2>&1;;
                                 *) /bin/modprobe -q osst >/dev/null 2>&1;;
                             esac
                         else
                             /bin/modprobe -q st >/dev/null 2>&1
                         fi
                         ;;
                    2|3) /bin/modprobe -q sg     >/dev/null 2>&1;;
                    4|5) /bin/modprobe -q sr_mod >/dev/null 2>&1;;
                    6)   /bin/modprobe -q sg     >/dev/null 2>&1;;
                    7)   /bin/modprobe -q sd_mod >/dev/null 2>&1;;
                    8|9) /bin/modprobe -q sg     >/dev/null 2>&1;;
                    14)  /bin/modprobe -q sd_mod >/dev/null 2>&1;;
                esac
            fi
        done
        msg "done."
    fi
}