Nathan March
2011-Aug-30 17:37 UTC
[Xen-devel] Block script unsafe when starting multiple devices in parallel
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 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Marek Marczykowski
2011-Aug-30 18:32 UTC
Re: [Xen-devel] Block script unsafe when starting multiple devices in parallel
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 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel