diff --git a/build_library/disk_util b/build_library/disk_util index eeb6d53ab7..0e79976860 100755 --- a/build_library/disk_util +++ b/build_library/disk_util @@ -11,7 +11,6 @@ import re import subprocess import sys import tempfile -import time import uuid # First sector we can use. @@ -434,24 +433,17 @@ def FormatFat(part, device): def PartitionLoop(options, partition): """Allocate (and automatically free) loop devices for a partition.""" - attempts = 0 - loop_dev = '' + loop_dev = subprocess.check_output(['sudo', 'losetup', + '--offset', str(partition['first_byte']), + '--sizelimit', str(partition['bytes']), + '--find', '--show', options.disk_image]) + loop_dev = loop_dev.strip() - while attempts < 10: - try: - loop_dev = subprocess.check_output(['sudo', 'losetup', - '--offset', str(partition['first_byte']), - '--sizelimit', str(partition['bytes']), - '--find', '--show', options.disk_image]) - loop_dev = loop_dev.strip() - break - except: - if loop_dev: - Sudo(['losetup', '--detach', loop_dev]) - attempts += 1 - time.sleep(1) + try: + yield loop_dev + finally: + Sudo(['losetup', '--detach', loop_dev]) - yield loop_dev def FormatPartition(options, part): print "Formatting partition %s (%s) as %s" % (