]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-disk: use /sys/dev/block/maj:min/partition to see if partition 5728/head
authorMykola Golub <mgolub@mirantis.com>
Mon, 17 Aug 2015 09:45:40 +0000 (12:45 +0300)
committerMykola Golub <mgolub@mirantis.com>
Mon, 31 Aug 2015 20:37:38 +0000 (23:37 +0300)
Fixes: #12706
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
src/ceph-disk

index 10a7b64fafd4ba8a0a27df5c2e0311fac1c5a353..b3a82c34f591b75ccaaaa11ef649aa24b56cc3f0 100755 (executable)
@@ -600,7 +600,8 @@ def is_partition(dev):
         return is_partition_mpath(dev)
 
     dev = os.path.realpath(dev)
-    if not stat.S_ISBLK(os.lstat(dev).st_mode):
+    st = os.lstat(dev)
+    if not stat.S_ISBLK(st.st_mode):
         raise Error('not a block device', dev)
 
     name = get_dev_name(dev)
@@ -608,9 +609,10 @@ def is_partition(dev):
         return False
 
     # make sure it is a partition of something else
-    for basename in os.listdir('/sys/block'):
-        if os.path.exists(os.path.join('/sys/block', basename, name)):
-            return True
+    major = os.major(st.st_rdev)
+    minor = os.minor(st.st_rdev)
+    if os.path.exists('/sys/dev/block/%d:%d/partition' % (major, minor)):
+        return True
 
     raise Error('not a disk or partition', dev)