xref: /freebsd/sys/contrib/openzfs/cmd/zpool/zpool.d/dm-deps (revision e92ffd9b626833ebdbf2742c8ffddc6cd94b963e)
1eda14cbcSMatt Macy#!/bin/sh
2eda14cbcSMatt Macy#
3eda14cbcSMatt Macy# Show device mapper dependent / underlying devices.  This is useful for
4eda14cbcSMatt Macy# looking up the /dev/sd* devices associated with a dm or multipath device.
5eda14cbcSMatt Macy#
6eda14cbcSMatt Macy
7eda14cbcSMatt Macyif [ "$1" = "-h" ] ; then
8eda14cbcSMatt Macy	echo "Show device mapper dependent (underlying) devices."
9eda14cbcSMatt Macy	exit
10eda14cbcSMatt Macyfi
11eda14cbcSMatt Macy
12*e92ffd9bSMartin Matuska# shellcheck disable=SC2154
13eda14cbcSMatt Macydev="$VDEV_PATH"
14eda14cbcSMatt Macy
15eda14cbcSMatt Macy# If the VDEV path is a symlink, resolve it to a real device
16eda14cbcSMatt Macyif [ -L "$dev" ] ; then
17eda14cbcSMatt Macy	dev=$(readlink "$dev")
18eda14cbcSMatt Macyfi
19eda14cbcSMatt Macy
20dae17134SMartin Matuskadev="${dev##*/}"
21eda14cbcSMatt Macyval=""
22eda14cbcSMatt Macyif [ -d "/sys/class/block/$dev/slaves" ] ; then
23dae17134SMartin Matuska	# ls -C: output in columns, no newlines, two spaces (change to one)
24dae17134SMartin Matuska	# shellcheck disable=SC2012
25dae17134SMartin Matuska	val=$(ls -C "/sys/class/block/$dev/slaves" | tr -s '[:space:]' ' ')
26eda14cbcSMatt Macyfi
27eda14cbcSMatt Macy
28eda14cbcSMatt Macyecho "dm-deps=$val"
29