|
|
|
@ -1,11 +1,38 @@
@@ -1,11 +1,38 @@
|
|
|
|
|
#!/bin/sh |
|
|
|
|
|
|
|
|
|
_remove_dm() { |
|
|
|
|
local dev=$1 |
|
|
|
|
local s |
|
|
|
|
local devname |
|
|
|
|
|
|
|
|
|
for s in /sys/block/${dev}/holders/dm-* ; do |
|
|
|
|
[ -e ${s} ] || continue |
|
|
|
|
_remove_dm ${s##*/} |
|
|
|
|
done |
|
|
|
|
# multipath devices might have MD devices on top, |
|
|
|
|
# which are removed after this script. So do not |
|
|
|
|
# remove those to avoid spurious errors |
|
|
|
|
case $(cat /sys/block/${dev}/dm/uuid) in |
|
|
|
|
mpath-*) |
|
|
|
|
return 0 |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
devname=$(cat /sys/block/${dev}/dm/name) |
|
|
|
|
dmsetup -v --noudevsync remove "$devname" || return $? |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_do_dm_shutdown() { |
|
|
|
|
local ret=0 |
|
|
|
|
local final=$1 |
|
|
|
|
local dev |
|
|
|
|
|
|
|
|
|
info "Disassembling device-mapper devices" |
|
|
|
|
for dev in $(dmsetup info -c --noheadings -o name) ; do |
|
|
|
|
dmsetup -v --noudevsync remove "$dev" || ret=$? |
|
|
|
|
for dev in /sys/block/dm-* ; do |
|
|
|
|
[ -e ${dev} ] || continue |
|
|
|
|
_remove_dm ${dev##*/} || ret=$? |
|
|
|
|
done |
|
|
|
|
if [ "x$final" != "x" ]; then |
|
|
|
|
info "dmsetup ls --tree" |
|
|
|
|