From 6f4ea819079fa298f12642769284d828e6bc2985 Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 1 May 2024 00:13:26 +0200 Subject: [PATCH] feat: New disk pass-through method (#714) --- readme.md | 7 ++----- src/disk.sh | 5 +++++ src/reset.sh | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/readme.md b/readme.md index 312f671..ff8594c 100644 --- a/readme.md +++ b/readme.md @@ -114,12 +114,9 @@ docker run -it --rm --name dsm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMI It is possible to pass-through disk devices directly by adding them to your compose file in this way: ```yaml - environment: - DEVICE2: "/dev/sda" - DEVICE3: "/dev/sdb" devices: - - /dev/sda - - /dev/sdb + - /dev/disk/by-uuid/12345-12345-12345-12345-12345:/dev/disk2 + - /dev/disk/by-uuid/45678-45678-45678-45678-45678:/dev/disk3 ``` Please note that the device needs to be totally empty (without any partition table) otherwise DSM does not always format it into a volume. diff --git a/src/disk.sh b/src/disk.sh index d0d8409..f9770df 100644 --- a/src/disk.sh +++ b/src/disk.sh @@ -527,6 +527,11 @@ DISK4_FILE="/storage4/data4" : "${DEVICE3:=""}" : "${DEVICE4:=""}" +[ -z "$DEVICE" ] && [ -b "/dev/disk1" ] && DEVICE="/dev/disk1" +[ -z "$DEVICE2" ] && [ -b "/dev/disk2" ] && DEVICE2="/dev/disk2" +[ -z "$DEVICE3" ] && [ -b "/dev/disk3" ] && DEVICE3="/dev/disk3" +[ -z "$DEVICE4" ] && [ -b "/dev/disk4" ] && DEVICE4="/dev/disk4" + if [ -n "$DEVICE" ]; then addDevice "$DEVICE" "device" "3" "0xc" || exit $? else diff --git a/src/reset.sh b/src/reset.sh index 8e9e4c8..88dc596 100644 --- a/src/reset.sh +++ b/src/reset.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash set -Eeuo pipefail -info () { printf "%b%s%b" "\E[1;34m❯ \E[1;36m" "$1" "\E[0m\n"; } -error () { printf "%b%s%b" "\E[1;31m❯ " "ERROR: $1" "\E[0m\n" >&2; } -warn () { printf "%b%s%b" "\E[1;31m❯ " "Warning: $1" "\E[0m\n" >&2; } +info () { printf "%b%s%b" "\E[1;34m❯ \E[1;36m" "${1:-}" "\E[0m\n"; } +error () { printf "%b%s%b" "\E[1;31m❯ " "ERROR: ${1:-}" "\E[0m\n" >&2; } +warn () { printf "%b%s%b" "\E[1;31m❯ " "Warning: ${1:-}" "\E[0m\n" >&2; } trap 'error "Status $? while: $BASH_COMMAND (line $LINENO/$BASH_LINENO)"' ERR