logo

mdev-helpers

Collection of helpers for mdev/mdevd git clone https://anongit.hacktivis.me/git/mdev-helpers.git

block-device (1038B)


  1. #!/bin/sh
  2. # Copyright ⓞ 2026 Haelwenn (lanodan) Monnier
  3. # SPDX-License-Identifier: BSD-3-Clause
  4. [ -n "${MDEV}" ] || exit 2
  5. case "$MDEV" in
  6. nvme*) type="nvme" ;;
  7. sd*) type="ata" ;;
  8. *) type="generic" ;;
  9. esac
  10. set -e
  11. # set >> /tmp/mdev_block_dev_"${MDEV}"_"$(date +%s.%N)".txt
  12. str_norm() {
  13. sed -n 's/^ *// ; s/ *$// ; s/[^a-zA-Z0-9]/_/g ; p' "$@"
  14. }
  15. model_path="/sys/class/block/${MDEV}/device/model"
  16. serial_path="/sys/class/block/${MDEV}/device/serial"
  17. disk_id="${MDEV}"
  18. if test -f "${model_path}" && test -f "${serial_path}" ; then
  19. serial=$(str_norm "$serial_path")
  20. model=$(str_norm "$model_path")
  21. disk_id="${type}-${model}_${serial}"
  22. [ -n "$PARTN" ] && disk_id="${disk_id}-part${PARTN}"
  23. else
  24. disk_id=$(disk_id "/dev/${MDEV}")
  25. [ -n "${disk_id}" ] || exit 2
  26. disk_id="${type}-${disk_id}"
  27. [ -n "$PARTN" ] && disk_id="${disk_id}-part${PARTN}"
  28. fi
  29. case "${ACTION}" in
  30. 'add'|'')
  31. mkdir -p /dev/disk/by-id
  32. ln -snf "/dev/${MDEV}" "/dev/disk/by-id/${disk_id}"
  33. ;;
  34. 'remove')
  35. rm -f "/dev/disk/by-id/${disk_id}"
  36. ;;
  37. esac