From: Mykola Golub Date: Mon, 17 Aug 2015 09:45:40 +0000 (+0300) Subject: ceph-disk: use /sys/dev/block/maj:min/partition to see if partition X-Git-Tag: v9.1.0~198^2^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6e0f0bbab941a899670a94309a3e22c78761b96d;p=ceph.git ceph-disk: use /sys/dev/block/maj:min/partition to see if partition Fixes: #12706 Signed-off-by: Mykola Golub --- diff --git a/src/ceph-disk b/src/ceph-disk index 10a7b64fafd..b3a82c34f59 100755 --- a/src/ceph-disk +++ b/src/ceph-disk @@ -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)