6
logger -t list-devices "deprecated parameter maybe-floppy"
9
cd|disk|partition|floppy|maybe-usb-floppy|usb-partition) ;;
11
echo "Usage: $0 cd|disk|partition|floppy|maybe-usb-floppy|usb-partition" >&2
16
if [ ! -d /sys/block ]; then
19
if type udevadm >/dev/null 2>&1; then
21
udevadm info -q "$1" -p "$2" 2>/dev/null
23
elif type udevinfo >/dev/null 2>&1; then
25
udevinfo -q "$1" -p "$2" 2>/dev/null
33
if ! name="$(device_info name "$1")"; then
34
name="$(printf %s "${1##*/}" | \
41
grep -qs ^DMRAID- "$1/dm/uuid"
44
is_sataraid_partition () {
45
# dmraid partitions are always slaved to another dm device
46
for slave in "$1"/slaves/dm-*; do
47
if [ -e "$slave" ]; then
54
if type dmraid >/dev/null 2>&1; then
55
raiddevs="$(dmraid -r -c || true)"
60
# cloned-and-hacked from partman-base/init.d/parted
63
for raiddev in $raiddevs; do
64
if [ "$(readlink -f "$raiddev")" = "$1" ]; then
75
for x in /sys/block/*/*[0-9]; do
76
[ -d "$x" ] || continue
77
syspaths="${syspaths:+$syspaths }$x"
79
for x in /sys/block/dm-*; do
80
[ -d "$x" ] || continue
81
(is_sataraid "$x" && is_sataraid_partition "$x") || continue
82
syspaths="${syspaths:+$syspaths }$x"
85
# Also allow misdetected USB devices
89
for x in /sys/block/*/*; do
90
[ -d "$x" ] || continue
91
syspaths="${syspaths:+$syspaths }$x"
95
for x in /sys/block/*; do
96
[ -d "$x" ] || continue
99
if is_sataraid "$x" && is_sataraid_partition "$x"; then
104
name="$(device_name "$x")"
105
if part_of_sataraid "$name"; then
110
syspaths="${syspaths:+$syspaths }$x"
114
for x in $syspaths; do
119
# TODO ugly special case for non-IDE floppies
127
if ! $match && [ "$TYPE" = cd ]; then
128
if device_info env "$devpath" | grep -q '^ID_CDROM='; then
133
if device_info env "$devpath" | grep -q "^ID_TYPE=$TYPE"; then
137
if ! $match && [ "$TYPE" = disk ]; then
139
/block/cciss\!*|/block/ida\!*|/block/rd\!*|/block/mmcblk*)
143
# for now, we only understand dmraid
144
if is_sataraid "/sys$devpath"; then
150
# Some USB sticks and CD drives are misdetected as floppy
151
# This allows to scan for those
152
if ! $match && ( $scan_partition || [ "$TYPE" = maybe-usb-floppy ] ); then
153
if device_info env "$devpath" | grep -q '^ID_BUS=usb' && \
154
device_info env "$devpath" | grep -q '^ID_TYPE=floppy'; then
158
# Disk partitions, but only on USB drives
159
if ! $match && [ "$TYPE" = usb-partition ]; then
160
if device_info env "$devpath" | grep -q '^ID_BUS=usb' && \
161
device_info env "$devpath" | grep -q '^ID_TYPE=disk'; then
166
device_name "/sys$devpath"