diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2009-03-23 21:44:14 +1100 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2009-03-23 21:50:32 +1100 |
commit | 95fdf2bd9857b21ce5079938ee6d701f6a876641 (patch) | |
tree | cbb1e419b4b682ad3d09bf8b4380ff433db5420c /test | |
parent | a7908ed63584ff12653b37fb2c2548c52c8ed9da (diff) | |
download | talos-petitboot-95fdf2bd9857b21ce5079938ee6d701f6a876641.tar.gz talos-petitboot-95fdf2bd9857b21ce5079938ee6d701f6a876641.zip |
Add hotplug test script
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'test')
-rwxr-xr-x | test/hotplug-device.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/hotplug-device.sh b/test/hotplug-device.sh new file mode 100755 index 0000000..8084521 --- /dev/null +++ b/test/hotplug-device.sh @@ -0,0 +1,61 @@ +#!/bin/bash + + +devmapper_name=meep +file=test.ext2 + +if [ $# -lt 1 ] +then + cat <<EOF +usage: $0 [add [path]|remove] + if <path> is specified, initialise the contents of the hotplugged + device from the directory at <path> +EOF + exit 1 +fi + +sudo true + +set -ex + +case "$1" +in + add) + dd if=/dev/zero of=$file bs=1k count=640 + mkfs.ext2 -F -m0 $file + + loopdev=$(sudo losetup -f --show $loopdev $file) + echo loop device is $loopdev + + if [ -d $2 ] + then + mkdir -p mount.tmp + sudo mount $loopdev mount.tmp + sudo rsync -av $2 mount.tmp/ + sudo umount mount.tmp + fi + + blocksize=$(sudo blockdev --getsize $loopdev) + echo block size = $blocksize + + sudo dmsetup create $devmapper_name \ + --table "0 $blocksize linear $loopdev 0" + ;; + remove) + set +e + awk '/^\/dev\/mapper\/'$devmapper_name'/ {print $2}' \ + /proc/mounts | + while read mountpoint + do + sudo umount $mountpoint + done + sudo dmsetup remove $devmapper_name + + sudo losetup -j $file | cut -f1 -d: | + while read loopdev + do + sudo losetup -d $loopdev + done + ;; + +esac |