block-device (1038B)
- #!/bin/sh
- # Copyright ⓞ 2026 Haelwenn (lanodan) Monnier
- # SPDX-License-Identifier: BSD-3-Clause
- [ -n "${MDEV}" ] || exit 2
- case "$MDEV" in
- nvme*) type="nvme" ;;
- sd*) type="ata" ;;
- *) type="generic" ;;
- esac
- set -e
- # set >> /tmp/mdev_block_dev_"${MDEV}"_"$(date +%s.%N)".txt
- str_norm() {
- sed -n 's/^ *// ; s/ *$// ; s/[^a-zA-Z0-9]/_/g ; p' "$@"
- }
- model_path="/sys/class/block/${MDEV}/device/model"
- serial_path="/sys/class/block/${MDEV}/device/serial"
- disk_id="${MDEV}"
- if test -f "${model_path}" && test -f "${serial_path}" ; then
- serial=$(str_norm "$serial_path")
- model=$(str_norm "$model_path")
- disk_id="${type}-${model}_${serial}"
- [ -n "$PARTN" ] && disk_id="${disk_id}-part${PARTN}"
- else
- disk_id=$(disk_id "/dev/${MDEV}")
- [ -n "${disk_id}" ] || exit 2
- disk_id="${type}-${disk_id}"
- [ -n "$PARTN" ] && disk_id="${disk_id}-part${PARTN}"
- fi
- case "${ACTION}" in
- 'add'|'')
- mkdir -p /dev/disk/by-id
- ln -snf "/dev/${MDEV}" "/dev/disk/by-id/${disk_id}"
- ;;
- 'remove')
- rm -f "/dev/disk/by-id/${disk_id}"
- ;;
- esac