[NEW PATCH] Get dmId from device number instead of looking for it (via gerrit-bot)

Saggi Mizrahi smizrahi at redhat.com
Thu Jul 28 10:46:56 UTC 2011


New patch submitted by Saggi Mizrahi (smizrahi at redhat.com)

You can review this change at: http://gerrit.usersys.redhat.com/757

commit 1bf869ed7ab05bfe53ae6155b88962070d8d8a72
Author: Saggi Mizrahi <smizrahi at redhat.com>
Date:   Thu Jul 28 13:47:14 2011 +0300

    Get dmId from device number instead of looking for it
    
    Change-Id: I2fa0444e370eb65c7251e4b1afaecff93e0cf937

diff --git a/vdsm/storage/devicemapper.py b/vdsm/storage/devicemapper.py
index bf155bc..20b1a2b 100644
--- a/vdsm/storage/devicemapper.py
+++ b/vdsm/storage/devicemapper.py
@@ -18,13 +18,14 @@ def getDmId(deviceMultipathName):
 
     # Link doesn't exists for some reason, might be a weird
     # udev configuration. Falling back to slow but sure method
-    for nameFile in glob("/sys/block/dm-*/dm/name"):
-        try:
-            with open(nameFile, "r") as f:
-                if f.read().rstrip("\n") == deviceMultipathName:
-                    return nameFile.split("/")[3]
-        except (IOError, OSError):
-            pass
+    devStat = os.stat(devlinkPath)
+    dmId = "dm-%d" % os.minor(devStat.st_rdev)
+    try:
+        with open("/sys/block/%s/dm/name" % dmId, "r") as f:
+            if f.read() == deviceMultipathName:
+                return dmId
+    except (IOError, OSError):
+        pass
 
     raise OSError(errno.ENOENT, "Could not find dm device named `%s`" % deviceMultipathName)
 




More information about the vdsm-patches mailing list