--- block.orig 2011-08-30 10:17:05.663106731 -0700 +++ block 2011-08-30 10:18:49.742946473 -0700 @@ -292,12 +292,12 @@ done fi - loopdev=$(losetup -f 2>/dev/null || find_free_loopback_dev) - if [ "$loopdev" = '' ] - then - release_lock "block" - fatal 'Failed to find an unused loop device' - fi + #loopdev=$(losetup -f 2>/dev/null || find_free_loopback_dev) + #if [ "$loopdev" = '' ] + #then + # release_lock "block" + # fatal 'Failed to find an unused loop device' + #fi if LANG=C losetup -h 2>&1 | grep read-only >/dev/null then @@ -305,7 +305,12 @@ else roflag='' fi - do_or_die losetup $roflag "$loopdev" "$file" + + loopdev=$(losetup -f "$file" --show) + if [[ $? -ne 0 ]]; then + fatal "Unable to bring up $file - $loopdev" + fi; + #do_or_die losetup $roflag "$loopdev" "$file" xenstore_write "$XENBUS_PATH/node" "$loopdev" write_dev "$loopdev" release_lock "block"