* Block script unsafe when starting multiple devices in parallel
@ 2011-08-30 17:37 Nathan March
2011-08-30 18:32 ` Marek Marczykowski
0 siblings, 1 reply; 2+ messages in thread
From: Nathan March @ 2011-08-30 17:37 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
[-- Attachment #1: Type: text/plain, Size: 938 bytes --]
Hi Guys,
Ran into an issue where losetup was failing, added some logging to it's
executions to see (first #'s are parent pid / pid):
32435 / 32438 - losetup -f
32436 / 32439 - losetup -f
32435 / 32438 - Exit code: 0
32435 / 32438 - Output: /dev/loop/10
32436 / 32439 - Exit code: 0
32436 / 32439 - Output: /dev/loop/10
32128 / 32451 - losetup /dev/loop/10 /mnt/xenDisks2/nathanxen2/backup_tmp
31934 / 32452 - losetup /dev/loop/10 /mnt/xenDisks1/nathanxen2/swap
Sometime's losetup seems to be stuck waiting on something else and since
multiple block devices are brought up in parallel, the block script
tries to use the same name for multiple loopback devices.
Fix for this is pretty straightforward - should just be letting losetup
figure out the device names itself, patch is attached.
- Nathan
--
Nathan March<nathan@gt.net>
Gossamer Threads Inc. http://www.gossamer-threads.com/
Tel: (604) 687-5804 Fax: (604) 687-5806
[-- Attachment #2: block.patch --]
[-- Type: text/plain, Size: 1107 bytes --]
--- 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"
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Block script unsafe when starting multiple devices in parallel
2011-08-30 17:37 Block script unsafe when starting multiple devices in parallel Nathan March
@ 2011-08-30 18:32 ` Marek Marczykowski
0 siblings, 0 replies; 2+ messages in thread
From: Marek Marczykowski @ 2011-08-30 18:32 UTC (permalink / raw)
To: Nathan March; +Cc: xen-devel@lists.xensource.com
[-- Attachment #1.1: Type: text/plain, Size: 1344 bytes --]
On 30.08.2011 19:37, Nathan March wrote:
> Hi Guys,
>
> Ran into an issue where losetup was failing, added some logging to it's
> executions to see (first #'s are parent pid / pid):
>
> 32435 / 32438 - losetup -f
> 32436 / 32439 - losetup -f
> 32435 / 32438 - Exit code: 0
> 32435 / 32438 - Output: /dev/loop/10
> 32436 / 32439 - Exit code: 0
> 32436 / 32439 - Output: /dev/loop/10
> 32128 / 32451 - losetup /dev/loop/10 /mnt/xenDisks2/nathanxen2/backup_tmp
> 31934 / 32452 - losetup /dev/loop/10 /mnt/xenDisks1/nathanxen2/swap
>
> Sometime's losetup seems to be stuck waiting on something else and since
> multiple block devices are brought up in parallel, the block script
> tries to use the same name for multiple loopback devices.
This should be prevented by locking mechanism (claim_lock /
release_lock), but it isn't working in some cases
(http://lists.xensource.com/archives/html/xen-devel/2011-07/msg00182.html).
I've workarounded it with wrapping this script with flock (in udev rules).
Perhaps it can be done in tools/hotplug/Linux/xen-backend.rules instead
of using claim_lock/release_lock? This is much simpler than
restructuring all hotplug scripts...
--
Pozdrawiam / Best Regards,
Marek Marczykowski | RLU #390519
marmarek at mimuw edu pl | xmpp:marmarek at staszic waw pl
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5842 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-08-30 18:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-30 17:37 Block script unsafe when starting multiple devices in parallel Nathan March
2011-08-30 18:32 ` Marek Marczykowski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.