7
logger -t list-devices "deprecated parameter maybe-floppy"
10
cd|disk|partition|floppy|maybe-usb-floppy|usb-partition|mmc-partition) ;;
12
echo "Usage: $0 cd|disk|partition|floppy|maybe-usb-floppy|usb-partition|mmc-partition" >&2
17
if [ ! -d /sys/block ]; then
20
if type udevadm >/dev/null 2>&1; then
22
udevadm info -q "$1" -p "$2" 2>/dev/null
24
elif type udevinfo >/dev/null 2>&1; then
26
udevinfo -q "$1" -p "$2" 2>/dev/null
34
if ! name="$(device_info name "$1")"; then
35
name="$(printf %s "${1##*/}" | \
42
grep -qs ^DMRAID- "$1/dm/uuid"
45
is_sataraid_partition () {
46
# dmraid partitions are always slaved to another dm device
47
for slave in "$1"/slaves/dm-*; do
48
if [ -e "$slave" ]; then
55
if type dmraid >/dev/null 2>&1; then
56
raiddevs="$(dmraid -r -c || true)"
61
# cloned-and-hacked from partman-base/init.d/parted
64
for raiddev in $raiddevs; do
65
if [ "$(readlink -f "$raiddev")" = "$1" ]; then
76
for x in /sys/block/*/*[0-9]; do
77
[ -d "$x" ] || continue
78
syspaths="${syspaths:+$syspaths }$x"
80
for x in /sys/block/dm-*; do
81
[ -d "$x" ] || continue
82
(is_sataraid "$x" && is_sataraid_partition "$x") || continue
83
syspaths="${syspaths:+$syspaths }$x"
86
# Also allow misdetected USB devices
89
usb-partition|mmc-partition)
90
for x in /sys/block/*/*; do
91
[ -d "$x" ] || continue
92
syspaths="${syspaths:+$syspaths }$x"
96
for x in /sys/block/*; do
97
[ -d "$x" ] || continue
100
if is_sataraid "$x" && is_sataraid_partition "$x"; then
105
name="$(device_name "$x")"
106
if part_of_sataraid "$name"; then
111
syspaths="${syspaths:+$syspaths }$x"
115
for x in $syspaths; do
120
# TODO ugly special case for non-IDE floppies
128
if ! $match && [ "$TYPE" = cd ]; then
129
if device_info env "$devpath" | grep -q '^ID_CDROM='; then
134
if device_info env "$devpath" | grep -q "^ID_TYPE=$TYPE"; then
138
if ! $match && [ "$TYPE" = disk ]; then
140
/block/cciss\!*|/block/ida\!*|/block/rd\!*|/block/nvme*|/block/mmcblk*|/block/vd[a-z]*|/block/xvd[a-z]*)
144
# for now, we only understand dmraid
145
if is_sataraid "/sys$devpath"; then
151
# Some USB sticks and CD drives are misdetected as floppy
152
# This allows to scan for those
153
if ! $match && ( $scan_partition || [ "$TYPE" = maybe-usb-floppy ] ); then
154
if device_info env "$devpath" | grep -q '^ID_BUS=usb' && \
155
device_info env "$devpath" | grep -q '^ID_TYPE=floppy'; then
159
# Disk partitions, but only on USB drives
160
if ! $match && [ "$TYPE" = usb-partition ]; then
161
if device_info env "$devpath" | grep -q '^ID_BUS=usb' && \
162
device_info env "$devpath" | grep -q '^ID_TYPE=disk'; then
166
# Disk partitions, but only on (non-USB) MMC devices
167
if ! $match && [ "$TYPE" = mmc-partition ]; then
168
if device_info env "$devpath" | egrep -q '^ID_PATH=(platform-mmc|platform-orion-ehci|platform-mxsdhci|platform-omap)'; then
172
if $match && ! device_info env "$devpath" | egrep -q '^ID_PART_ENTRY_TYPE=0x(5|f|85)$'; then
173
device_name "/sys$devpath"