From 83026e26cca6a7f2b323f51bfbb8463c30b34c07 Mon Sep 17 00:00:00 2001 From: yury Date: Wed, 16 Mar 2005 14:53:14 +0000 Subject: [PATCH] - find_assigned_loop() should check all loop devices and do not return after first not accessible. - looking for free loop device is moved to stand alone function find_free_loop() - int init_loop() do not check if passed size > 8000 before mkfs() as this is checked in mkfs() - do not stop looking for free loop device after first not accessible device. --- lustre/utils/lconf | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/lustre/utils/lconf b/lustre/utils/lconf index 3de00fd..f704c77 100755 --- a/lustre/utils/lconf +++ b/lustre/utils/lconf @@ -920,8 +920,19 @@ def find_assigned_loop(file): m = re.search(r'\((.*)\)', out[0]) if m and file == m.group(1): return dev - else: - break + return '' + +# find free loop device +def find_free_loop(file): + loop = loop_base() + + # find next free loop + for n in xrange(0, MAX_LOOP_DEVICES): + dev = loop + str(n) + if os.access(dev, os.R_OK): + (stat, out) = run('losetup', dev) + if stat: + return dev return '' # create file if necessary and assign the first free loop device @@ -940,32 +951,22 @@ def init_loop(file, size, fstype, journal_size, inode_size, dev = find_assigned_loop(realfile) if dev: - print 'WARNING: file ', realfile, 'already mapped to', dev - return dev + print 'WARNING: file', realfile, 'already mapped to', dev + return dev if reformat or not os.access(realfile, os.R_OK | os.W_OK): - if size < 8000: - panic("size of loopback file '%s' must be larger than 8MB, but is set to %s" % (realfile, size)) (ret, out) = run("dd if=/dev/zero bs=1k count=0 seek=%d of=%s" %(size, realfile)) if ret: panic("Unable to create backing store:", realfile) - mkfs(realfile, size, realfstype, journal_size, inode_size, mkfsoptions, isblock=0) - loop = loop_base() - # find next free loop - for n in xrange(0, MAX_LOOP_DEVICES): - dev = loop + str(n) - if os.access(dev, os.R_OK): - (stat, out) = run('losetup', dev) - if stat: - print "attach " + realfile + " <-> " + dev - run('losetup', dev, realfile) - return dev - else: - print "out of loop devices" - return '' + dev = find_free_loop(realfile) + if dev: + print "attach " + realfile + " <-> " + dev + run('losetup', dev, realfile) + return dev + print "out of loop devices" return '' -- 1.8.3.1