Add attach commands for losetup
This commit is contained in:
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# readies a VHD device in Linux
|
||||
# nbd-mount /path/to/vhd /dev/nbd0
|
||||
APP_DIR="$(dirname "$0")"
|
||||
DRIVE="$1"
|
||||
DISK_LABEL="$2"
|
||||
DISK_PATH="/dev/disk/by-label/$DISK_LABEL"
|
||||
SLEEP_INTERVAL=0.5
|
||||
|
||||
# refuse to connect twice
|
||||
EXISTING_DRIVE="$(losetup -l | tail -n +2 | tr -s ' ' | cut -f 6 | grep -w "$DRIVE")"
|
||||
if [ -n "$EXISTING_DRIVE" ]; then
|
||||
EXISTING_LOOP="$(losetup -l | tail -n +2 | tr -s ' ' | grep -w "$DRIVE" | cut -f 1 -d ' ')"
|
||||
if ! [ -L "$DISK_PATH" ] || ! [ -b "$DISK_PATH" ]; then
|
||||
echo "$DRIVE already mounted to $EXISTING_LOOP"
|
||||
exit 1
|
||||
fi
|
||||
LOOP_DEST="$(readlink -f $DISK_PATH)"
|
||||
if [ "$LOOP_DEST" != "$EXISTING_LOOP" ]; then
|
||||
echo "$DRIVE already mounted to $EXISTING_LOOP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# it's already mounted to the same destination
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# wait for device to appear
|
||||
if ! [ -e "$DISK_PATH" ]; then
|
||||
losetup -f "$DRIVE"
|
||||
|
||||
# poll until the block device node appears or task times out
|
||||
until [ -L "$DISK_PATH" ] && [ -b "$DISK_PATH" ]; do
|
||||
sleep "$SLEEP_INTERVAL"
|
||||
done
|
||||
fi
|
||||
Reference in New Issue
Block a user