| ... | ... |
@@ -229,15 +229,8 @@ EOF |
| 229 | 229 |
ROOTFS=$VM_DIR/root |
| 230 | 230 |
mkdir -p $ROOTFS |
| 231 | 231 |
|
| 232 |
-# Make sure we have nbd-ness |
|
| 233 |
-modprobe nbd max_part=63 |
|
| 234 |
- |
|
| 235 |
-# Which NBD device to use? |
|
| 236 |
-NBD=${NBD:-/dev/nbd$GUEST_NETWORK}
|
|
| 237 |
- |
|
| 238 | 232 |
# Clean up from previous runs |
| 239 | 233 |
umount $ROOTFS || echo 'ok' |
| 240 |
-qemu-nbd -d $NBD || echo 'ok' |
|
| 241 | 234 |
|
| 242 | 235 |
# Clean up old runs |
| 243 | 236 |
cd $VM_DIR |
| ... | ... |
@@ -246,12 +239,28 @@ rm -f $VM_DIR/disk |
| 246 | 246 |
# Create our instance fs |
| 247 | 247 |
qemu-img create -f qcow2 -b $VM_IMAGE disk |
| 248 | 248 |
|
| 249 |
-# Connect our nbd and wait till it is mountable |
|
| 250 |
-qemu-nbd -c $NBD disk |
|
| 251 |
-if ! timeout 60 sh -c "while ! [ -e ${NBD}p1 ]; do sleep 1; done"; then
|
|
| 252 |
- echo "Couldn't connect $NBD" |
|
| 249 |
+# Make sure we have nbd-ness |
|
| 250 |
+modprobe nbd max_part=63 |
|
| 251 |
+ |
|
| 252 |
+# Set up nbd |
|
| 253 |
+modprobe nbd max_part=63 |
|
| 254 |
+for i in `seq 1 15`; do |
|
| 255 |
+ if [ ! -e /sys/block/nbd$i/pid ]; then |
|
| 256 |
+ NBD=/dev/nbd$i |
|
| 257 |
+ # Connect to nbd and wait till it is ready |
|
| 258 |
+ qemu-nbd -c $NBD disk |
|
| 259 |
+ if ! timeout 60 sh -c "while ! [ -e ${NBD}p1 ]; do sleep 1; done"; then
|
|
| 260 |
+ echo "Couldn't connect $NBD" |
|
| 261 |
+ exit 1 |
|
| 262 |
+ fi |
|
| 263 |
+ break |
|
| 264 |
+ fi |
|
| 265 |
+done |
|
| 266 |
+if [ -z "$NBD" ]; then |
|
| 267 |
+ echo "No free NBD slots" |
|
| 253 | 268 |
exit 1 |
| 254 | 269 |
fi |
| 270 |
+NBD_DEV=`basename $NBD` |
|
| 255 | 271 |
|
| 256 | 272 |
# Mount the instance |
| 257 | 273 |
mount ${NBD}p1 $ROOTFS
|