]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-disk: make list_partition behave with unusual device names
authorAlexandre Maragone <alexandre.marangone@inktank.com>
Tue, 18 Jun 2013 23:18:01 +0000 (16:18 -0700)
committerSage Weil <sage@inktank.com>
Tue, 25 Jun 2013 04:59:24 +0000 (21:59 -0700)
When you get device names like sdaa you do not want to mistakenly conclude that
sdaa is a partition of sda.  Use /sys/block/$device/$partition existence
instead.

Fixes: #5211
Backport: cuttlefish
Signed-off-by: Alexandre Maragone <alexandre.maragone@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 8c0daafe003935881c5192e0b6b59b949269e5ae)

src/ceph-disk

index bd7e6206ae82228d5a03ed0650ce0c0d02643bef..93864c1c00859832b5bd0e00bcafc0ca4f740afa 100755 (executable)
@@ -206,16 +206,11 @@ def list_partitions(disk):
     disk = os.path.realpath(disk)
     assert not is_partition(disk)
     assert disk.startswith('/dev/')
-    base = disk[5:]
+    base = disk.split('/')[-1]
     partitions = []
-    with file('/proc/partitions', 'rb') as proc_partitions:
-        for line in proc_partitions.read().split('\n')[2:]:
-            fields = re.split('\s+', line)
-            if len(fields) < 5:
-                continue
-            name = fields [4]
-            if name != base and name.startswith(base):
-                partitions.append('/dev/' + name)
+    for name in os.listdir(os.path.join('/sys/block', base)):
+        if name.startswith(base):
+            partitions.append('/dev/' + name)
     return partitions