From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gary Grebus Subject: [PATCH] Fix losetup -f not working on SLES10 Date: Fri, 11 Dec 2009 15:58:50 -0500 Message-ID: <4B22B28A.3090102@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel Cc: Andre Przywara List-Id: xen-devel@lists.xenproject.org Andre, Does this fix the problem for you? /gary Signed-off-by: Gary Grebus diff -r b928797213ac tools/hotplug/Linux/block --- a/tools/hotplug/Linux/block Fri Dec 11 09:17:09 2009 +0000 +++ b/tools/hotplug/Linux/block Fri Dec 11 15:44:43 2009 -0500 @@ -16,6 +16,26 @@ 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 @@ done fi - loopdev=$(losetup -f) + loopdev=$(find_free_loopback_dev) if [ "$loopdev" = '' ] then release_lock "block"