diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-12-14 07:56:21 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-12-14 07:56:21 +0000 |
commit | bbe624405fa32ec3a6cd0c57d4ffc2ea6cf625b9 (patch) | |
tree | 9034794b16b6bd42ed4a959ff53926e7f9ce75b2 /tools/hotplug | |
parent | 75b0781226de01514018cdaf94a9bedd8cccc5e6 (diff) | |
download | xen-bbe624405fa32ec3a6cd0c57d4ffc2ea6cf625b9.tar.gz xen-bbe624405fa32ec3a6cd0c57d4ffc2ea6cf625b9.tar.bz2 xen-bbe624405fa32ec3a6cd0c57d4ffc2ea6cf625b9.zip |
Fix losetup -f not working on SLES10
Signed-off-by: Gary Grebus <gary.grebus@oracle.com>
Diffstat (limited to 'tools/hotplug')
-rw-r--r-- | tools/hotplug/Linux/block | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tools/hotplug/Linux/block b/tools/hotplug/Linux/block index 36c76f39bf..1d9c917c79 100644 --- a/tools/hotplug/Linux/block +++ b/tools/hotplug/Linux/block @@ -16,6 +16,26 @@ expand_dev() { echo -n $dev } +find_free_loopback_helper() { + local next_devnum=0 + local busy_devnum + while read busy_devnum; do + if [ "$next_devnum" != "$busy_devnum" ]; then + break + fi + let next_devnum=$next_devnum+1 + done + echo "/dev/loop${next_devnum}" +} + +# Not all distros have "losetup -f" +find_free_loopback_dev() { + local loopdev + loopdev=$(losetup -a | sed -e 's+^/dev/loop++' -e 's/:.*//' | find_free_loopback_helper) + if [ -n "$loopdev" ] && [ -b "$loopdev" ]; then + echo "$loopdev" + fi +} ## # check_sharing device mode @@ -270,7 +290,7 @@ mount it read-write in a guest domain." done fi - loopdev=$(losetup -f) + loopdev=$(find_free_loopback_dev) if [ "$loopdev" = '' ] then release_lock "block" |