From 83026e26cca6a7f2b323f51bfbb8463c30b34c07 Mon Sep 17 00:00:00 2001
From: yury <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 3de00fd606..f704c77b9c 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 ''
 
-- 
GitLab