]> git.ipfire.org Git - thirdparty/dracut.git/blob - modules.d/90dm/dm-shutdown.sh
4e2e2602c8c43a0c70f4d3436ace4a34c23fd741
[thirdparty/dracut.git] / modules.d / 90dm / dm-shutdown.sh
1 #!/bin/sh
2
3 _remove_dm() {
4 local dev=$1
5 local s
6 local devname
7
8 for s in /sys/block/${dev}/holders/dm-* ; do
9 [ -e ${s} ] || continue
10 _remove_dm ${s##*/}
11 done
12 devname=$(cat /sys/block/${dev}/dm/name)
13 dmsetup -v --noudevsync remove "$devname" || return $?
14 return 0
15 }
16
17 _do_dm_shutdown() {
18 local ret=0
19 local final=$1
20 local dev
21
22 info "Disassembling device-mapper devices"
23 for dev in /sys/block/dm-* ; do
24 [ -e ${dev} ] || continue
25 _remove_dm ${dev##*/} || ret=$?
26 done
27 if [ "x$final" != "x" ]; then
28 info "dmsetup ls --tree"
29 dmsetup ls --tree 2>&1 | vinfo
30 fi
31 return $ret
32 }
33
34 if command -v dmsetup >/dev/null &&
35 [ "x$(dmsetup status)" != "xNo devices found" ]; then
36 _do_dm_shutdown $1
37 else
38 :
39 fi